MySQL 支持一种叫复制(replication)的特性,作用是可以将MySQL主服务器数据(Master)异步复制到MySQL从服务器(Slave),以实现多台服务器数据的实时同步。
MySQL Replication 详细配置请参考官方手册:《MySQL中的复制》《Replication》
一、MySQL主复制配置
1、清理MySQL日志
1
2
3
| mysql>show BINARY logs;
mysql>purge BINARY logs TO 'mysql-bin.000325';
mysql>FLUSH LOGS; |
2、锁表、获取主复制日志名和偏移量
1
2
3
| mysql>FLUSH TABLES WITH READ LOCK;
mysql>show master STATUS\G
mysql>UNLOCK TABLES; |
打包MySQL数据,并传送到从服务器
1
2
3
| cd /usr/local/mysql/data
tar -cvf /tmp/mysql-snapshot.tar .
scp /tmp/mysql-snapshot.tar root@176.32.85.16:/tmp |
3、创建从复制连接用户
注意修改默认用户名:repl、密码:slavepass
1
| GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'slavepass'; |
4、MySQL配置文件
1
2
3
4
5
6
7
| [mysqld]
log-bin=mysql-bin
binlog_format=mixed
server-id = 1
binlog-ignore-db=phpmyadmin
innodb_flush_log_at_trx_commit=1
slave-skip-errors=all |
配置主-主服务器时必须额外使用下面选项:
1
2
3
4
| log-slave-updates
sync_binlog=1
auto_increment_offset=2
auto_increment_increment=1 |
二、MySQL从复制配置
1、还原数据快照
1
2
| cd /usr/local/mysql/data
tar -xvf /tmp/mysql-snapshot.tar |
2、配置主服务器信息
1
2
3
4
5
6
| CHANGE MASTER TO
MASTER_HOST='106.187.38.210',
MASTER_USER='repl',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1579; |
3、启动从复制进程、查看状态。
1
2
| mysql>start slave;
mysql>SHOW SLAVE STATUS\G; |
注:上面所有操作都是可以在phpMyadmin中以图形化方式完成。