环境
服务器 ubuntu 14.04LTS
2台mysql服务器 192.168.11.25 192.168.9.32
mysql 版本5.5.22
主服务器 192.168.11.25
导出要同步的数据库
mysqldump -u root -p easy_drive > /home/easy_drive.sql #在MySQL主服务器进行操作,导出数据库osyunweidb到/home/oeasy_drive.sql
#vi /etc/mysql/my.cnf
[mysqld]
log-bin=mysql-bin //[必须]启用二进制日志
server-id=25 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
binlog-do-db=easy_drive //需要同步的数据库,如果是多个库,则为多行
binlog-ignore-db=mysql //不需要同步的数据库
service mysqld restart #重启MySQL
mysql>GRANT REPLICATION SLAVE ON . to ‘mysync’@’%’ identified by ‘q123456’; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。
mysql>flush privileges; #刷新系统授权表
mysql> show master status;
+——————+———-+—————————-+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+—————————-+——————+
| mysql-bin.000005 | 61426 | easy_drive,easy_drive_stat | mysql |
+——————+———-+—————————-+——————+
1 row in set (0.00 sec)
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
从服务器 192.168.9.32
导入数据到数据库
mysql>source /home/carbit-fu/win7Share/easy_drive_stat.sql;
#vi /etc/mysql/my.cnf
[mysqld]
log-bin=mysql-bin //[必须]启用二进制日志
server-id=35 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
binlog-do-db=easy_drive //需要同步的数据库,如果是多个库,则为多行
binlog-ignore-db=mysql //不需要同步的数据库
service mysqld restart #重启MySQL
mysql>change master to master_host='192.168.11.25',master_user='mysync',master_password='q123456',master_log_file='mysql-bin.000005',master_log_pos=61426;
mysql>start slave; //启动从服务器复制功能
mysql>slave start; #开启slave同步进程
mysql>SHOW SLAVE STATUS\G #查看slave同步信息,出现以下内容
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.21.169
Master_User: osyunweidbbak
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000019
Read_Master_Log_Pos: 7131
Relay_Log_File: MySQLSlave-relay-bin.000002
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000019
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: osyunweidb
Replicate_Ignore_DB: mysql
Replicate_Do_Table:
Replicate_Ignore_Table:
1 row in set (0.00 sec)
注意查看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上这两个参数的值为Yes,即说明配置成功!
常见错误
一
Slave_IO_Running: NO
Slave_SQL_Running: Yes
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: ‘Could not find first log file name in binary log index file’
解决办法:
从机器停止slave
mysql> slave stop;
到master机器登陆mysql:
记录master的bin的位置,例如:mysql> show mster status;
+——————-+———-+————–+——————————————-+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————-+———-+————–+——————————————-+
| mysqld-bin.000011 | 106 | | information_schema,mysql |
+——————-+———-+————–+——————————————-+
马上到slave执行
mysql> CHANGE MASTER TO MASTER_LOG_FILE=’mysqld-bin.000011’,MASTER_LOG_POS=106;
mysql> slave start;
mysql> show slave status\G;
二
Slave_IO_Running: YES
Slave_SQL_Running: NO
并报出,有重复记录,无法插入的提示信息
解决这个问题,也有两个办法,一是在my.cnf里加
slave-skip-errors=1062
二是,直接执行
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
跳过一步,不作同步,根据情况可以设置多步。
Linux下配置MySQL主从复制:http://www.linuxdiyf.com/linux/11905.html
Ubuntu 14.04下搭建MySQL主从服务器:http://www.linuxdiyf.com/linux/10688.html
Linux下MySQL互为主从配置:http://www.linuxdiyf.com/linux/9400.html