MySQL主从复制(脚本配合)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL主从复制(脚本配合)相关的知识,希望对你有一定的参考价值。
首先需要有两台mysql服务器,我是同过mysql的多实例来实现的主从复制,实验中用的了脚本,可以参考多实例环境的搭建
多实例环境搭建 http://aby028.blog.51cto.com/5371905/1892250
主:3306(master)
从:3307(slave)
保证 mysql 多实例的正常运行
netstat -tlunp | grep 330
查看 log-bin 和 server-id
egrep "log-bin|server-id" /data/{3306,3307}/my.cnf
/data/3306/my.cnf:log-bin = /data/3306/mysql-bin # master开
/data/3306/my.cnf:server-id = 1
/data/3307/my.cnf:#log-bin = /data/3307/mysql-bin # slave可以关闭
/data/3307/my.cnf:server-id = 3
若更改 mysql 的配置文件需要重启数据库
/data/3306/mysql stop
/data/3307/mysql stop
/data/3306/mysql start
/data/3307/mysql start
登陆主库3306
mysql -uroot -p123456 -S /data/3306/mysql.sock
查看 mysql 的配置参数
mysql> show variables like "log_bin";
mysql> show variables like "server_id";
在主库授权一个账号,专门用于同步,然后刷新权限
grant replication slave on *.* to [email protected]‘%‘ identified by ‘123456‘;
flush privileges;
检查刚才的操作
select user,host from mysql.user;
show grants for [email protected]‘%‘;
锁表。锁表后自己将无法创建数据库
flush table with read lock;
备份打包 (需要另开一个窗口,保证之前的窗口不能退出)
mysqldump -uroot -p123456 --events -S /data/3306/mysql.sock -A -B | gzip > /opt/bak_$(date +%F).sql.gz
打包完成后,再次查看状态,保证与之前的查询状态一样,证明数据没有写入
show master status;
解锁表
unlock tables;
将刚才备份好的 gzip 文件导入到 3307 数据库 (全量备份)
cd /opt/
gzip -d bak_2017-01-06.sql.gz
mysql -uroot -p123456 -S /data/3307/mysql.sock < bak_2017-01-06.sql
增量备份,登陆从库配置同步参数
CHANGE MASTER TO
MASTER_HOST=‘192.168.6.45‘,
MASTER_PORT=3306,
MASTER_USER=‘rep‘,
MASTER_PASSWORD=‘123456‘,
MASTER_LOG_FILE=‘mysql-bin.000001‘,
MASTER_LOG_POS=459;
在 salve 上执行 start slave 操作,IO 连接
start slave;
查看当前的状态,关键有以下几个内容
show slave status\G;
Slave_IO_State: Waiting for master to send event
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0 #从库落后主库的秒数
以上是关于MySQL主从复制(脚本配合)的主要内容,如果未能解决你的问题,请参考以下文章