Java
代码
mysql> CHANGE MASTER TO MASTER_HOST='server1',
-> MASTER_USER='repl',
-> MASTER_PASSWORD='p4ssword',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=0;
mysql> CHANGE MASTER TO MASTER_HOST='server1',
-> MASTER_USER='repl',
-> MASTER_PASSWORD='p4ssword',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=0;
MASTER_LOG_FILE 和 MASTER_LOG_POS 是主服务器上 SHOW MASTER STATUS
命令看到的文件和位置。位置设置成
0
,即从日志头开始复制。
上面的命令是连接主备库,下面是开始复制的命令:
mysql> START SLAVE;
可以通过
SHOW SLAVE STATUS;查看备库复制情况。
4、从已有数据的数据库复制
上面的步骤是主库和备库都是新库,在都没有数据是,先配置复制。如果从一个已有数
据的服务器复制,先要将备库和主库的数据进行同步。
需要三个条件让主库和备库保持同步:
在某个时间点的主库的数据快照。
主库当前二进制日志文件,和获得数据快照时在该二进制日志文件中的偏移量,称为
日志文件坐标。可以通过
SHOW MASTER STATUS 命令获取这些值。
从快照时间到现在的二进制日志
如何克隆数据可以讲本书,这里极其简略的列举一些方法:
使用冷备份
关闭主库,把数据复制到备库。重启主库后,会使用一个新的二进制日志文件,将备库
通过
CHANGE MASTER TO 指向新的文件其实处。
使用热备份
如果仅使用
MyISAM 表,可以在主库运行时使用 mysqlhotcopy 或 rsync 来复制数据。
使用
mysqldump
如果只包含
InnoDB 表,可以使用以下命令来转存主库数据并将其加载到备库:
$ mysqldump --single-transaction --all-database --master-data=1 --host=server1 | mysql
--host=server2
选项
--single-transaction 使得转存的数据为事务开始前的数据。如果使用非事务表,可以
使用
--lock-all-tables 选项来确保一致性。
使用
Percona Xtrabackup
Percona 的 Xtrabackup 是一款开元的热备份工具。它能够在备份时不阻塞服务器的操作。
使用
MySQL Workbench 的 utilities 工具集
工具集中有很多有用的工具,其中
mysqldbcopy.exe 或 mysqldbcopy.py 可以用来备份数
据。
下面这个命令可以从主库备份数据到备库,备份后,自动启动备库的复制线程。