一:系统环境

主服务器:192.168.40.21   centos7.6

从服务器:192.168.40.22  centos7.6

注:两台服务器最好能保证系统版本一样,数据库版本一样。关闭selinux和防火墙

二:使用源码包安装mysql8.0

注:建议多用源码包安装,方便自定义。

1、环境准备

rm -rf /etc/my.cnf
adduser mysql
cd /home/mysql/
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz
xz -d mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.16-linux-glibc2.12-x86_64.tar
mv mysql-8.0.16-linux-glibc2.12-x86_64 mysql-8.0.16
cd mysql-8.0.16
mkdir data log pid tmp

2、编辑/home/mysql/mysql-8.0.16/my.cnf文件

注意:主从数据库中,my.cnf配置文件server-id字段的值不能相同

vi my.cnf
[mysqld]
port = 3306
basedir =/home/mysql/mysql-8.0.16
datadir = /home/mysql/mysql-8.0.16/data
log-error = /home/mysql/mysql-8.0.16/log/mysqld.log
pid-file = /home/mysql/mysql-8.0.16/pid/mysqld.pid
socket = /home/mysql/mysql-8.0.16/tmp/mysql.sock

character-set-server=utf8
default-storage-engine=Innodb
max_connections=500
lower_case_table_names = 1
innodb_buffer_pool_size=10G
innodb-buffer-pool-instances=1
innodb_read_io_threads=8
innodb_write_io_threads=8
innodb-file-per-table=true
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

server-id=2
log_bin=/home/mysql/mysql-8.0.16/log/binlog
binlog-format=ROW
log_bin_trust_function_creators=1
max_binlog_size = 1024M
expire_logs_days = 7 

3、安装数据库,并记录下默认密码

chown -R mysql:mysql /home/mysql/mysql-8.0.16
cd /home/mysql/mysql-8.0.16
bin/mysqld --initialize --user=mysql --basedir=/home/mysql/mysql-8.0.16 --lower_case_table_names=1

mysql8.0搭建主从_linux

4、启动数据库前的准备工作

cp support-files/mysql.server /etc/init.d/mysql
vim /etc/init.d/mysql
46行 basedir=/home/mysql/mysql-8.0.16
47行 datadir=/home/mysql/mysql-8.0.16/data

touch /home/mysql/mysql-8.0.16/log/mysqld.log
chown -R mysql:mysql /home/mysql/mysql-8.0.16/log/mysqld.log

5、启动数据库并修改密码

service mysql start
systemctl enable mysql
/usr/lib/systemd/systemd-sysv-install enable mysql

./bin/mysql -uroot -p -S /home/mysql/mysql-8.0.16/tmp/mysql.sock
alter user root@localhost identified by '123456';
use mysql; 
update user set host='%' where user='root';
flush privileges;
grant all privileges on *.* to 'root'@'%';

6、创建两个软链接,就可以直接使用mysql -uroot -p这种方法登录

 ln -s /home/mysql/mysql-8.0.16/bin/mysql /usr/bin/
 ln -s /home/mysql/mysql-8.0.16/tmp/mysql.sock /tmp/mysql.sock
三:主从架构搭建

1、主数据库上面创建数据同步用户

mysql -uroot -p123456
create user 'user01'@'192.168.40.22' identified with mysql_native_password by '123456';
grant replication slave on *.* to 'user01'@'192.168.40.22';
show master status;

mysql8.0搭建主从_mysql_02

2、从数据库上面,指向主数据库

mysql -uroot -p123456
change master to master_host='192.168.40.21',
master_user='user01',
master_password='123456',
master_log_file='binlog.000001',
master_port=3306,
master_log_pos=2177;

3、从数据库上面启动slave,并检查状态

start slave;
show slave status\G;

mysql8.0搭建主从_mysql_03