(1)环境介绍
/etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
MySQL版本:5.7
mysql> select version();
+------------+
| version() |
+------------+
| 5.7.22-log |
+------------+
(2) master端配置
准备数据
mysql> create database testdb; mysql> create table testdb.t1(id int,name varchar(50)); mysql> insert into testdb.t1 values(1,'jack'),(2,'alex');
开启二进制日志和配置server-id
#vim /etc/my.cnf log-bin server-id=1 gtid_mode=ON enforce_gtid_consistency=1
重启服务器
#systemctl restart mysqld
创建授权账号
mysql> grant replication slave,replication client on *.* to 'rep'@'192.168.111.%' identified by 'Reprep@123'; mysql> flush privileges;
备份数据库
mysqldump -uroot -pRedhat@123 -A -R --triggers --routines --events --single-transaction --master-data=1 --flush-logs >$(date +%F)-mysql-all.sql
把备份的数据库文件拷贝到从库主机上
scp -r 2018-04-26-mysql-all.sql [email protected]:/root
在完整备份后在创建一些数据
mysql> insert into testdb.t1 values(3,'www'); mysql> insert into testdb.t1 values(4,'yyyy');
(3)slave端配置
验证主库创建的账号是否能够正常登陆,也验证是否有防火墙问题
# mysql -h192.168.111.151 -urep -p'Reprep@123'
配置从库的server-id和设置从库只读
注意应用程序连接从库的权限不要给所有权限,只让从库只读扫描二维码关注公众号,回复: 75922 查看本文章#vim /etc/my.cnf log-bin server-id=2 read-only gtid_mode=ON enforce_gtid_consistency=1 master-info-repository=TABLE \\把mysql连接主库的信息保存在表中 relay-log-info-repository=TABLE log_slave_updates = ON
重启数据库
#systemctl restart mysqld
把备份导入到从库上
mysql -uroot -pRedhat@123 </root/2018-04-26-mysql-all.sql
连接主库
mysql> change master to -> master_host='192.168.111.151', \\生成环境建议使用主机名,不建议使用ip地址 -> master_user='rep', -> master_password='Reprep@123', -> master_auto_position=1; change master to master_host='192.168.111.151',master_user='rep',master_password='Reprep@123',master_auto_position=1;
开启复制和验证状态
mysql> start slave; mysql> show slave status\G Slave_IO_Running: Yes Slave_SQL_Running: Yes