红联Linux门户
Linux帮助

mysql5.5主从服务配置

发布时间:2015-09-11 10:51:22来源:linux网站作者:番茄攻城狮

环境

服务器 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