Home > Database > Mysql Tutorial > body text

centos下MySQL主从同步配置

WBOY
Release: 2016-06-07 15:34:35
Original
1150 people have browsed it

centos下MySQL主从同步配置 一、环境 主机: master操作系统:centos 5.3 IP:192.168.1.222 MySQL版本:5.0.77 从机: slave操作系统:centos 5.3 IP:192.168.1.220 MySQL版本:5.0.77 二、创建数据库 分别登录master机和slave机的mysql:mysql –u root

centos下MySQL主从同步配置
一、环境

       主机:

                  master操作系统:centos 5.3

                  IP:192.168.1.222

                  MySQL版本:5.0.77

        从机:         

    slave操作系统:centos 5.3

                  IP:192.168.1.220

                  MySQL版本:5.0.77

 

 

 

二、创建数据库

分别登录master机和slave机的mysql:mysql –u root –p

创建数据库:create database repl;

 

 

 

三、master机和slave机的相关配置

1、修改master机器中mysql配置文件my.cnf,该文件在/etc目录下

在[mysqld]配置段添加如下字段

server-id=1

log-bin=log

binlog-do-db=repl //需要同步的数据库,如果没有本行,即表示同步所有的数据库

binlog-ignore-db=mysql //被忽略的数据库


在master机上为slave机添加一同步帐号
grant replication slave on *.* to 'repl'@'192.1681.220' identifiedby '123456';


重启master机的mysql服务:service mysqld restart


用show master status 命令看日志情况

mysql>show master status;

+-----------------+------------+-------------------+-----------------------+

|File               |Position    | Binlog_Do_DB   |Binlog_Ignore_DB |

+-----------------+------------+-------------------+-----------------------+

  log.000003|          98  |repl                |mysql                   |

+-----------------+------------+-------------------+-----------------------+

1 row in set (0.00 sec)

 

 

 


2、修改slave机中mysql配置文件

同样在[mysqld]字段下添加如下内容

server-id=2

master-host=192.168.1.222

master-user=repl

master-password=123456

master-port=3306

master-connect-retry=60

replicate-do-db=repl //同步的数据库,不写本行 表示 同步所有数据库


然后重启slave机的mysql


在slave机中进入mysql

mysql>start slave;

mysql>show slave statusG;
如果Slave_IO_Running、Slave_SQL_Running状态为Yes则表明设置成功。

 

 

 

四、出现的问题

问题1 当我在执行start slave这条命令时,系统提示

ERROR 1200 (HY000): The server is not configured as slave; fixin config file or with CHANGE MASTER TO,

执行show slave status;又提示Empty set (0.00 sec),想不通问题在哪里

 

或问题2 Slave_SQL_Running: No


后来发现,原来slave已经默认开启,要先关闭再开启

执行 slave stop;

再执行

change master tomaster_host='192.168.1.222',master_user='repl',master_password='123456',master_log_file='log.000003' ,master_log_pos=98;

然后执行 slave start;

这时 再执行show slave statusG

显示如下:

*************************** 1. row***************************

            Slave_IO_State: Waiting for master to send event

               Master_Host: 192.168.1.222

               Master_User: repl

               Master_Port: 3306

             Connect_Retry: 60

           Master_Log_File: log.000003

       Read_Master_Log_Pos: 98

           Relay_Log_File: mysqld-relay-bin.000002

             Relay_Log_Pos: 229

     Relay_Master_Log_File: log.000003

          Slave_IO_Running: Yes

         Slave_SQL_Running: Yes

           Replicate_Do_DB:

       Replicate_Ignore_DB:

        Replicate_Do_Table:

    Replicate_Ignore_Table:

   Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

                Last_Errno: 0

                Last_Error:

              Skip_Counter: 0

       Exec_Master_Log_Pos: 98

           Relay_Log_Space: 229

           Until_Condition: None

            Until_Log_File:

             Until_Log_Pos: 0

        Master_SSL_Allowed: No

        Master_SSL_CA_File:

        Master_SSL_CA_Path:

           Master_SSL_Cert:

         Master_SSL_Cipher:

            Master_SSL_Key:

     Seconds_Behind_Master: 0

1 row in set (0.00 sec)

显示红色那两行,说明配置成功。

 

 

 

五、测试主从服务器是否能同步

在主服务器上面新建一个表,必须在repl数据下

mysql> use repl

Database changed

mysql> create table test(id int,namechar(10));

Query OK, 0 rows affected (0.00 sec)


mysql> insert into test values(1,'zaq');

Query OK, 1 row affected (0.00 sec)


mysql> insert into test values(1,'xsw');

Query OK, 1 row affected (0.00 sec)


mysql> select * from test;

+------+------+

| id    |name |

+-------+------+

     |zaq   |

     | xsw |

+-------+------+

2 rows in set (0.00 sec)

 


在从服务器查看是否同步过来

mysql> use repl;

Database changed

mysql> select * from test;

+------+------+

| id    |name |

+------+------+

   1 | zaq   |

   1 | xsw |

+------+------+

2 rows in set (0.00 sec)



解决办法II:
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start; 



Slave_IO_Running: No

1.mysql> reset slave; # 重点就是这行
2.mysql> change master to master_host='192.168.1.199', master_user='apk_service', master_password='123456', master_log_file='mysql-bin.000042', master_log_pos=366;; # 请依照自行环境设定
3.mysql> start slave; # 就正常了.

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template