Mysql 主从复制的原理已经在Mysql 主从复制-原理篇大体介绍了下,这篇主要介绍如何搭建一套Mysql主从复制体系。
Mysql主从复制分为主配置和从配置两部分:
Master 配置:
1.修改/etc/my.cnf
[mysqld]
#开启mysql binlog模式
log-bin=mysql-bin
#设置server-id,要与slave的server-id不一样
server-id=1
2.重启mysql
/etc/init.d/mysql restart
3.登录mysql,检查server_id
mysql -uroot -proot
mysql> show variables like "%server_id%"
4.建立replication账户和权限
mysql> GRANT REPLICATION SLAVE ON *.* TO 'sync'@'172.16.25.51' IDENTIFIED BY 'sync';
5.记录Masterbinlog的位置
mysql> show master status;
如果Master已经有很多表了,而slave没有,则Master首先要将自己的表结构复制到slave上,如果是两个新数据库,则可以跳过步骤6
6.将Master数据库备份
mysqldump -uroot -proot --all-databases > dump.sql
将dump.sql copy到slave机器上
Slave 配置:
1.修改/etc/my.cnf
[mysqld]
#开启mysql binlog模式
log-bin=mysql-bin
#设置server-id,要与Master的server-id不一样
server-id=56
2.重启mysql
/etc/init.d/mysql restart
3.如果做了Master的步骤5,那么现在执行slave的步骤3,否则跳过步骤3
mysql> mysql -uroot -proot < dump.sql
4.登录mysql,检查server_id
mysql -uroot -proot
mysql> show variables like "%server_id%"
5.如果server_id与my.cnf中相同则跳过,否则强行改变server_id
mysql> set global server_id=56;
6.slave上配置master信息 与 master 步骤5的log_file 以及 log_pos 相同
mysql> change master to master_host='172.16.25.51',master_user='sync',master_password='sync',master_log_file='mysql-bin.000002',master_log_pos=179423165;
7.开启slave
mysql> start slave;
8.检查slave状态
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
上述两个线程状态为Yes,则配置完毕