环境说明
主:centos7 192.168.11.128
从:centos7 192.168.11.129
MySQL5.7
配置主
1、 vi /etc/my.cnf
server-id=128
log_bin=master128
2、 重启
service mysqld restart
service mysqld status
ls -lt /var/lib/mysql
3、 新建一个数据库为试验做准备
mysql> create database zctest;
mysqldump -uroot -p123456 zctest > /tmp/zctest.sql #备份
scp /tmp/zctest.sql 'root'@'192.168.11.129':/tmp/ #将备份文件传给从库服务器
4、 创建同步账号
#只给复制权限,对所有库所有表,ip为从服务器的ip,账号为root,密码:123456
mysql> grant replication slave on *.* to 'root'@'192.168.11.129' identified by '123456';
mysql> flush tables with read lock; #先进行锁表,等主从服务器数据保持一致,再解锁表
mysql> show master status; #需要记录file、position位置
配置从
1、 vi /etc/my.cnf
server-id=129 #必须得和主服务器上的server-id不一样
2、 重启
service mysqld restart
service mysqld status
3、 恢复数据库
mysql -uroot -p123456 zctest < zctest.sql
4、 实现主从同步
mysql> stop slave;
#master_log_file、master_log_pos:主服务器上
mysql> change master to master_host='192.168.11.128',master_user='root',master_password='123456',master_log_file='master128.000001',master_log_pos=615;
mysql> start slave;
mysql> show slave status\G 查看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
5、 解锁主库的表(在主上操作)
mysql> unlock tables;
主从恢复
1、 在master进行锁表
mysql> flush tables with read lock;
2、 查看master 状态:
show master status; #需要记录file、position位置
3、 停止从库的状态
mysql> stop slave;
4、 将从库数据与主库数据同步(mysqldump、手动执行等方式)
比如:
mysqldump -uroot -p123456 zctest > /tmp/zctest.sql (master)
scp zctest.sql [email protected]:/tmp/ (master)
mysql -uroot -p123456 zctest < zctest.sql (slave)
5、 设置从库同步
#master_log_file与master_log_pos 是主库show master status信息里的| File与Position
mysql> change master to master_host='192.168.11.128',master_user='root',master_password='123456',master_log_file='master128.000001',master_log_pos=1875;
6、 重新开启从库同步
mysql> start slave;
查看同步状态
mysql> show slave status\G 查看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes、
7、 在master上解锁:
mysql> unlock tables;