zoukankan      html  css  js  c++  java
  • centos下MySQL主从同步配置

    说明:由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样,

    因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低,
    Master的版本肯定不能高于Slave版本。(版本向下兼容)

    一、环境

            主机: master操作系统:centos 5.5 64位

                       IP:192.168.1.222

                       MySQL版本:5.1.50

             从机:  slave操作系统:centos 5.5 64位

                   IP:192.168.1.220

                       MySQL版本:5.1.50

    二、创建数据库

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

    如果登录失败需要在终端界面下加入MYSQL安装的绝对路径,语法如下:

    Export PATH=”/usr/local/mysql/bin:$PATH”

    创建数据库:create database repl;

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

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

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

    server-id=1

    log-bin=mysql-bin

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

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

    my.cnf中,和复制相关的一些重要选项

    expire_logs_days=7
    max_binlog_size=100M
    binlog_format=row


    expire_logs_days=7表示二进制日志文件只保留最近7天的,设置了该选项,mysql会自动只保留最近7天的二进制日志。

    max_binlog_size=100M表示一个二进制日志文件最大为100M。超过该大小之后会新建一个binlog

    在master机上为slave机添加一同步帐号


    grant replication slave on *.* to 'repl'@'192.1681.220' identified by '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 status\G;


    如果Slave_IO_Running、Slave_SQL_Running状态为Yes则表明设置成功。

    四、出现的问题

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

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

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

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

    执行 slave stop;

    再执行

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

    然后执行 slave start;

    这时 再执行show slave status\G

    显示如下:

    *************************** 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,name char(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 |

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

    |    1    | zaq   |

    |    1    | 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)

    说明已经配置成功。

     
  • 相关阅读:
    android 中文 api (43) —— Chronometer
    SVN客户端清除密码
    Android 中文 API (35) —— ImageSwitcher
    Android 中文API (46) —— SimpleAdapter
    Android 中文 API (28) —— CheckedTextView
    Android 中文 API (36) —— Toast
    Android 中文 API (29) —— CompoundButton
    android 中文 API (41) —— RatingBar.OnRatingBarChangeListener
    Android 中文 API (30) —— CompoundButton.OnCheckedChangeListener
    Android 中文 API (24) —— MultiAutoCompleteTextView.CommaTokenizer
  • 原文地址:https://www.cnblogs.com/helloyb/p/2705407.html
Copyright © 2011-2022 走看看