了解更多参考:阿里云RDS主从
步骤:
MySQL主服务器
配置my.cnf 在[mysqld]中添加:server-id=1
log-bin=/path/to/mysql-bin
sync_binlog=1
innodb_buffer_pool_size = 1024M
innodb_flush_log_at_trx_commit=1 # or 2 if want to be quick.
在master上关闭skip-networking选项,否则salve不能与master通讯。从服务器
配置中[mysqld]添加server-id=2
relay_log=/path/to/logs/relay-bin
read_only=1
log_slave_updates=1 # 从库作为其他库主库,需要打开log-bin
skip_slave_start # 备库崩溃后不会自启replicate-do-table = db_name.tb_name
重启主、从MySQL服务器
登录主服务器,执行
mysql>GRANT REPLICATION SLAVE, RELOAD, SUPER ON *.* TO 'username'@'host' IDENTIFIED BY 'password';
mysql>FLUSH TABLES WITH READ LOCK;
mysql>SHOW MASTER STATUS;
记下file = mysql-bin.000001
和 Position = 120主服务器上另开一个连接,执行
shell> mysqldump -uroot -p -P3306 --all-databases --triggers --routines --events > mysqlall.sql
主库解锁
mysql> UNLOCK TABLES;
将导出的数据传到从服务器并导入数据库
登录从服务器数据库并执行
mysql> CHANGE MASTER TO MASTER_HOST='host', MASTER_PORT=3306, MASTER_USER='username', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=120;
开启主从复制
mysql>start slave;
mysql>show slave status \G
查看Slave_IO_Running: Yes
Slave_SQL_Running: Yes
是否显示正常flush logs;
清空缓冲区数据,写入数据库。