mysql5.5配置主从同步服务器

一、准备工作

在两台MySQL服务器192.168.1.1和192.168.1.2安装MySQL 5.5.22,注本教程用的是linux centos6.5服务器。

二、配置MySQL主服务器

mysql  -uroot  -p    #进入MySQL控制台
create database db1;   #建立数据库db1
insert into mysql.user(Host,User,Password) values('localhost','db1user',password('123456'));   #创建用户db1user
#建立MySQL主从数据库同步用户db1sync密码123456
flush privileges;  #刷新系统授权表

#授权用户db1sync只能从192.168.1.2这个IP访问主服务器192.168.1.1上面的数据库,并且只具有数据库备份的权限 
grant replication slave  on *.* to'db1sync'@'192.168.1.2'identified by'123456'with grant option;

三、把MySQL主服务器192.168.1.1中的数据库db1导入到MySQL从服务器192.168.1.2中。因为数据结构要一致,暂时没有测试过数据结构不一致能否同步。

1、在192.168.1.1上,在导出之前可以先进入MySQL控制台执行下面命令

flush tables with read lock;    #数据库只读锁定命令,防止导出数据库的时候有数据写入
 
#unlock tables;   #解除锁定,同步完成后解除锁定

2、导出数据库

mysqldump -u root -p db1 > /home/db1sync.sql    #在MySQL主服务器进行操作,导出数据库db1到/home/db1sync.sql 

3、把导入数据库到MySQL从服务器192.168.1.2中

mysql  -u root -p  #进入从服务器MySQL控制台
 
create database db1;   #创建数据库
 
use db1    #进入数据库
 
source  /home/db1sync.sql  #导入备份文件到数据库

mysql -u db1sync -h 192.168.1.3 -p #测试在从服务器上登录到主服务器

四、配置MySQL主服务器192.168.1.1的my.cnf文件

vi /etc/my.cnf   #编辑配置文件,在[mysqld]部分添加下面内容
server-id=1   #设置服务器id,为1表示主服务器,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
log_bin=mysql-bin  #启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
binlog-do-db=db1  #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
binlog-ignore-db=mysql   #不同步mysql系统数据库
service mysqld  restart  #重启MySQL,有可能是service mysql restart

五、进入主服务器192.168.1.1,获取master状态

mysql -u root -p   #进入mysql控制台
flush tables with read lock;  #(锁表,防止下面获取的状态更新)
show master status;  #查看主服务器,出现以下类似信息
+------------------+----------+--------------+------------------+
| File                        | Position  | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000019 |    7131    | db1    | mysql                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

注意:这里记住File的值:mysql-bin.000019和Position的值:7131,后面会用到。

六、配置MySQL从服务器192.168.1.2的my.cnf文件

vi /etc/my.cnf   #编辑配置文件,在[mysqld]部分添加下面内容
server-id=2   #配置文件中已经有一行server-id=1,修改其值为2,表示为从数据库
log-bin=mysql-bin  #启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
replicate-do-db=db1   #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
replicate-ignore-db=mysql   #不同步mysql系统数据库
:wq!    #保存退出
service mysqld restart   #重启MySQL

注意:MySQL 5.1.7版本之后,已经不支持把master配置属性写入my.cnf配置文件中了,只需要把同步的数据库和要忽略的数据库写入即可。

进入MySQL从服务器192.168.1.2的mysql进行以下操作

mysql  -u root -p  #进入MySQL控制台
slave stop;   #停止slave同步进程
change master to master_host='192.168.1.1',master_user='db1sync',master_password='123456',master_log_file='mysql-bin.000019' ,master_log_pos=7131;    #执行同步语句
slave start;    #开启slave同步进程
SHOW SLAVE STATUS\G   #查看slave同步信息,出现以下内容
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.3
                  Master_User: db1sync
                  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: db1
          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,即说明配置成功!

要把主服务器192.168.1.1的表解锁了

unlock tables;   #解除锁定,同步完成后解除锁定

查看slave状态可以用以下命令:

show slave status;

如果 master 用的 mysql5.6 , binlog_checksum 默认设置的是 crc32。 如果slave用的 5.5 或者更早的版本,请将master的 binglog_checksum设置为 none。如果slave用的 5.5 或者更早的版本,请在my.cnf里将master的 binglog_checksum设置为 none。否则会报类似如下错误
Last_IO_Error: Got fatal error 1236 from master when reading data from >> binary log: ‘Slave can not handle replication events with the checksum that >> master is configured to log; the first event ‘mysql-bin.000001’

关闭 master checksum:

set global binlog_checksum='NONE';
show variables like '%checksum%';

在 my.cnf 配置文件中[mysqld]添加如下设置,下次重启就可以不用用命令关闭 master checksum,直接就生效了。

binlog_checksum=none

七、测试MySQL主从服务器双机同步是否成功

1、进入MySQL主服务器192.168.1.1

mysql -u root -p  #进入主服务器MySQL控制台
 
use db1   #进入数据库
 
CREATE TABLE test ( id int not null primary key,name char(20) );   #创建test表

2、进入MySQL从服务器192.168.1.2

mysql -u root -p  #进入MySQL控制台
 
use db1   #进入数据库
 
show  tables;  #查看db1表结构,会看到有一个新建的表test,表示数据库同步成功

到了这一步,MySQL数据库配置主从服务器实现数据库同步的教程就已经完成了。

mysql5.5配置主从同步服务器:等您坐沙发呢!

发表评论

表情
还能输入210个字