background image

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 可以用来备份数

据。

下面这个命令可以从主库备份数据到备库,备份后,自动启动备库的复制线程。