提前安装好mysql。
主服务器:
修改配置文件 vi /etc/my.cnf 命令编辑mysqld配置
[mysqld] log-bin=mysql-bin //[必须]启用二进制日志 server-id=1 //[必须]服务器唯一ID,默认是1,一般取IP最后一段 binlog_do_db=testmirror //要做同步的数据库名字,可以是多个数据库,之间用分号分割。
主服务器上建立帐户并授权slave:
mysql> GRANT REPLICATION SLAVE ON *.* to 'myslave'@'%' identified by '123456';
查询master的状态
mysql>show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000004 | 308 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
从服务器:
修改配置文件 vi /etc/my.cnf 命令编辑mysqld配置
[mysqld] log-bin=mysql-bin //[不是必须]启用二进制日志 server-id=2 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
配置从服务器Slave:
mysql>change master to master_host='127.0.0.1',master_user='myslave',master_password='123456', master_log_file='mysql-bin.000004',master_log_pos=308; //注意不要断开,308数字前后无单引号。该处配置对应上面的master状态 Mysql>start slave; //启动从服务器复制功能
检查从库是否安装正确:
mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 127.0.0.1 //主服务器地址 Master_User: myslave //授权帐户名,尽量避免使用root Master_Port: 3306 //数据库端口,部分版本没有此行 Connect_Retry: 60 Master_Log_File: mysql-bin.000004 Read_Master_Log_Pos: 600 //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos Relay_Log_File: ddte-relay-bin.000003 Relay_Log_Pos: 251 Relay_Master_Log_File: mysql-bin.000004 Slave_IO_Running: Yes //此状态必须YES Slave_SQL_Running: Yes //此状态必须YES ......
注意事项:
所有的配置完成后,如果flush没有起效果,则需要重启mysql。
从库中忽略主从同步错误,否则一旦有一个错误,则所有同步皆会失效:
mysql>slave stop; mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 ; #跳过一个事务 mysql>slave start;
主库重启后从库需要额外操作(File会变化):
mysql>show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000004 | 308 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)
mysql>slave stop; mysql>change master to master_host='10.3.11.27',master_user='myslave',master_password='lt123456', master_log_file='mysql-bin.000003',master_log_pos=367; //注意不要断开,308数字前后无单引号。 Mysql>start slave; //启动从服务器复制功能