标签:
mysql内建的复制功能是构建大规模、高性能应用的基础。复制解决的基本问题是让一台服务器的数据与其他的服务器同步,以主备的方式构建数据系统。
vi /etc/my.cnf log_bin = mysql-bin #启动二进制日志 server_id = 128 #服务器id,一般取ip的最后一段
service mysql restart
mysql>GRANT REPLICATION SLAVE ON *.* to ‘replication‘@‘%‘ identified by ‘123456‘;
mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000015 | 107 | | | +------------------+----------+--------------+------------------+
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
mysql> CHANGE MASTER TO -> MASTER_HOST=‘192.168.75.128‘, -> MASTER_USER=‘replication‘, -> MASTER_PASSWORD=‘123456‘, -> MASTER_PORT=3306, -> MASTER_LOG_FILE=‘mysql-bin.000015‘, -> MASTER_LOG_POS=107, -> MASTER_CONNECT_RETRY=10; //启动复制功能 mysql> start slave;
mysql> show slave status\G ************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.75.128 Master_User: replication Master_Port: 3306 Connect_Retry: 10 Master_Log_File: Read_Master_Log_Pos: 4 Relay_Log_File: t1-relay-bin.000015 Relay_Log_Pos: 4 Relay_Master_Log_File: Slave_IO_Running: Yes //此状态必须YES Slave_SQL_Running: Yes //此状态必须YES .............
前面的设置是主备服务器都刚创建,并且知道当前主库的起始日志,实际工作中的场景大多是已经运行了一段时间的主库,然后用一台新安装的备库与之同步。下面是备服务器中途复制的常用方法:
SHOW SLAVE STATUS输出的secondsbehindmaster理论上显示了备库的延时。
备库忽略了一些数据或人为的修改备库的数据时就需要从新同步备库,方法有: - 关闭备库,重新从主库复制一份数据,简单但数据量大时不推荐 - 使用mysqldump转储受影响的数据,当主库数据没有发生改变时,该方法很好,但只同步一百万行数据中的一小部分时效率不高。 - 开源工具pt-table-sync,比较主备之间不同的数据从而进行同步,效率很高
标签:
原文地址:http://www.cnblogs.com/huifukejian/p/4781923.html