1.主动复制架构图:
2.主从复制流程图:
3.主从复制条件:
#我们下面的操作是多实例主从复制,3306为主库,3307为从库。
主库要开启log-bin,主库和从库的server-id要不一样。
4.在主库上面创建同步用户:
mysql> grant replication slave on *.* to 'rep'@'172.16.1.%' identified by 'Root1234'; #后面的密码要设置复杂些。
mysql> flush privileges;
5.导出主库数据文件:
[plain] view plain copy
- 一。常规方法:
- mysql> flush table with read lock; #先锁表,锁表后不能退出mysql窗口,否则失效
- mysql> show master status; #记录bin-log的位置信息
- +------------------+----------+--------------+------------------+
- | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
- +------------------+----------+--------------+------------------+
- | mysql-bin.000004 | 560 | | |
- +------------------+----------+--------------+------------------+
- mysqldump -uroot -pRoot123 -S /data/3306/mysql.sock --events -A -B|gzip >/tmp/bak_$(date +%F).sql.gz
- mysql> unlock tables; #解锁数据库
- 二。快捷方法:
- mysqldump -uroot -pRoot123 -S /data/3306/mysql.sock --events -A -B -F --master-data=2 -x|gzip >/tmp/bak_f_$(date +%F).sql.gz
- -x 自动锁表
- -F --master-data=2 以备注形式记录bin-log的位置。(可以打开文件看头部备注信息)
6.还原备份内容到从库:
gzip -d bak_2016-12-02.sql.gz
mysql -uroot -pRoot456 -S /data/3307/mysql.sock < bak_2016-12-02.sql
7.在从库创建master_info文件,并启动同步:
[plain] view plain copy
- mysql -uroot -pRoot456 -S /data/3307/mysql.sock
- CHANGE MASTER TO
- MASTER_HOST='172.16.1.214',
- MASTER_PORT=3306,
- MASTER_USER='rep',
- MASTER_PASSWORD='Root1234',
- MASTER_LOG_FILE='mysql-bin.000004',
- MASTER_LOG_POS=560;
- EOF
- mysql> start slave; #开启同步
- mysql> show slave status \G ; #查看同步状态信息
8.监控mysql主从复制的状态指标:
mysql -uroot -pRoot456 -S /data/3307/mysql.sock -e "show slave status \G ;" | egrep -i "_Running|_Behind"
Slave_IO_Running: Yes #同步进程是否启动
Slave_SQL_Running: Yes #sql进程是否启动
Seconds_Behind_Master: 0 #从库同步完成需要的时间