linux配置MYSQL5.7 Master Slave主从复制

环境说明:

master server IP:172.17.61.131

slave server IP:172.17.61.132

mysql version: mysql-5.7.21-linux

目标:61.132的mysql完全是从61.131物理复制过去的,实现主从复制的基本要求。


1.首先修改master的mysql配置文件  /etc/my.cnf

主要增加以下内容:

server-id=10000
log_bin = /u01/mysql/mysql_bin
#skip-grant-tables
innodb_flush_log_at_trx_commit=1
sync_binlog=1
expire_logs_days=10
max_binlog_size=1073741824

修改完后重启数据库!

[root@qht131 backup]# service mysql restart

2.在master上创建用户,用于slave连接登录

mysql> CREATE USER 'repl'@'172.17.61.%' IDENTIFIED BY 'repl';  
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.17.61.%';  
repl用户必须具有REPLICATION SLAVE权限,除此之外没有必要添加不必要的权限,密码为repl。
172.17.61.%,这个配置是指明repl用户所在服务器,这里%是通配符,表示172.17.61.0网段的Server都可以使用repl用户登陆主服务器,当然你也可以指定固定Ip。


3.在master上备份数据库

备份之前先flush tables with read lock,禁止数据库操作,防止产生新的日志。并记住当前的master_log_file以及position。
mysql > FLUSH TABLES WITH READ LOCK;
mysql>  SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql_bin.000008 |     615  |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
不要退出当前的session,重开一个ssh进行备份。
[root@qht131 backup]# mysqldump -u root -p --all-databases --master-data >dbdump.db
备份完之后再Unlock tables;
mysql > UNLOCK TABLES;

4.将备份文件复制到slave.

[root@qht131 backup]# scp dbdump.db 172.17.61.132:/u01/backup

至此master所有的配置已完成。

5.配置slave上面的/etc/my.cnf

需要变更和添加的参数如下:

server-id=10001
#log_bin = /u01/mysql/mysql_bin
relay-log=/u01/mysql/slave_relay_bin
expire-logs-days=10
relay_log_recovery=on
relay_log_info_repository=TABLE

重启数据库,这里需要注意的是,重启数据库需要另外修改auto.cnf的server-uuid值,否则在slave应用日志时会出错(由于slave库是直接从master复制过来的原因导致)。

Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.

将server-uuid随便改掉一个值,不和master的值一样就行:

[root@qht132 software]# cat /u01/mysql/auto.cnf
[auto]
server-uuid=8d8746fb-2cc6-11e8-b1b6-000c295c63e1
[root@qht132 software]# service mysql restart

6.在slave上恢复master的数据

[root@qht132 software]# mysql -p -u root < dbdump.db

7.切换到slave模式:

CHANGE MASTER TO  
MASTER_HOST='172.17.61.131',  
MASTER_USER='repl',  
MASTER_PASSWORD='repl',  
MASTER_LOG_FILE='mysql-bin.000008',  
MASTER_LOG_POS=615;  
MASTER_LOG_FILE='mysql-bin.000008', MASTER_LOG_POS=615 注意这里一定不能写错了,
这个内容可以在dbdump.db的开头找到,记录着master备份时当前二进制文件的位置,slave在恢复数据后就从这个点开始复制数据。

最后开启slave同步:

mysql> START SLAVE; 

可以通过show slave status查看slave库是否有有应用的最新的数据!

完成!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值