zoukankan      html  css  js  c++  java
  • MySQL数据库双机热备------主-主备份配置

    MySQL数据库双机热备------主-主备份配置

    实验环境:

    主1数据库 192.168.1.1 centos6.5 x86_64 +MySQL5.5.35

    主2数据库192.168.1.2  WindowsXP x64 +MySQL5.5.13

    一、安装数据库

    1.在centos6.5 x86_64 上面安装MySQL5.5.35数据库,下载rpm包的形式安装,在MySQL的官网上面下载。

    MySQL-client-5.5.35-1.el6.x86_64.rpm

    MySQL-server-5.5.35-1.el6.x86_64.rpm

    2.WindowsXP x64 上面安装MySQL5.5.13,软件在网上获取。

    二、两个数据库都修改root密码,并且开启远程访问权限。

    1.# mysqladmin -u root -ppassword newpassword

    Windows上面的是在dos下面进入到C:Program FilesMySQLMySQL Server 5.5in目录然后执行上面的命令。

    2.mysql> grant all privileges on *.* to root@'% 'identified by 'newpassword';

    mysql>flush privileges;

    修改好之后,相互远程测试一下看是否能够相互远程。

    三、主1数据库配置

    1.添加同步账号

    登陆mysql操作界面,在主1服务器上为主2服务器建立一个用来同步的连接帐户,该帐户必须授予REPLICATION SLAVE权限。因为从mysql版本3.2以后就可以通过REPLICATION对其进行双机热备的功能操作。

    操作指令如下:

    mysql> grant replication slave on*.* to bak@'192.168.1.2' identified by 'bak';

    mysql> flush privileges;

    2.测试同步账号的连接性

    创建好同步连接帐户后,我们可以通过在主2服务器上用bak帐户对主1服务器数据库进行访问,看下是否能连接成功。主2上输入如下指令:

    # mysql –h192.168.1.1 –u bak –p  回车之后要求输入密码,密码为bak,如果登陆成功,则可以继续进行双击热备,否则请找到问题并解决。

    3.修改配置文件

    修改配置文件/etc/my.cnf  打开在[mysqld]下修改即可:

    [mysqld]

    server-id= 1

    log-bin=mysql-bin                  #启用日志文件

    binlog-do-db= test          #需要同步的数据库

    binlog-ignore-db= mysql    #不需要同步的数据库

    log-slave-updates

    sync_binlog= 1

    auto_increment_offset= 1

    auto_increment_increment= 2

    replicate-do-db= test

    replicate-ignore-db= mysql,information_schema

    修改完配置文件后,保存后,重启一下mysql服务,如果成功则没问题。

    4.查看主服务器 mysql的状态文件

    #servicemysql restart

    登陆mysql 输入命令:

    mysql>flush tables whit read lock;   锁表以便在同步之前写数据进去。

    mysql>show master statusG

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

               File: mysql-bin.000003

           Position: 107

       Binlog_Do_DB: test

    Binlog_Ignore_DB:mysql

    1row in set (0.00 sec)

    注意看里面的参数,特别前面两个File和Position,在从服务(Slave)配置主-主关系会有用到的。

    注:这里使用了锁表,目的是为了产生环境中不让进新的数据,好让从服务器定位同步位置,初次同步完成后,记得解锁。

    mysql>unlock tables;

    QueryOK, 0 rows affected (0.00 sec)

    四、主2数据库配置

    1.添加同步账户

    登陆mysql操作界面,在主2服务器上为主1服务器建立一个用来同步的连接帐户,该帐户必须授予REPLICATION SLAVE权限。因为从mysql版本3.2以后就可以通过REPLICATION对其进行双机热备的功能操作。

    操作指令如下:

    mysql> grant replication slave on*.* to bak@'192.168.1.1' identified by 'bak';

    mysql> flush privileges;

    2.测试同步账户的连接性

    创建好同步连接帐户后,我们可以通过在从服务器(Slave)上用bak帐户对主服务器(Master)数据库进行访问,看下是否能连接成功。在从服务器(Slave)上输入如下指令:

    # mysql –h192.168.1.2 –u bak –p  回车之后要求输入密码,密码为bak,如果登陆成功,则可以继续进行双击热备,否则请找到问题并解决。

    3.修改配置文件

    修改配置文件 C:ProgramFilesMySQLMySQL Server 5.5 中的my.ini

    [mysqld]

    server-id = 2

    log-bin=mysql-bin

    replicate-do-db = test

    replicate-ignore-db =mysql,information_schema,performance_schema

    binlog-do-db = test

    binlog-ignore-db = mysql

    log-slave-updates

    sync_binlog = 1

    auto_increment_offset = 2

    auto_increment_increment = 2

    修改完之后,重启windows上的mysql的服务。

    Netmysql restart  也可以手工去服务里面找到mysql重启。

    4.查看主2 mysql服务器的状态文件

    登陆mysql 输入命令:

    mysql>flush tables whit read lock;   锁表以便在同步之前写数据进去。

    mysql>show master statusG

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

               File: mysql-bin.000004

           Position: 536

       Binlog_Do_DB: test

    Binlog_Ignore_DB:mysql

    1row in set (0.00 sec)

    五、利用change master 语句指定同步位置

    1.指定主1的同步源

    主1的同步源为主2 mysql服务器。

    在主1服务器上面操作,这步是最关键的一步了,在进入mysql操作界面后,输入如下指令:

    mysql>stopslave;          //先停步slave服务线程,这个是很重要的,如果不这样做会造成以下操作不成功。

    mysql>change master to

    >master_host='192.168.1.2',master_user='bak',master_password='bak',

    > master_log_file='mysql-bin.000004',master_log_pos=536; 

    注:master_log_file,master_log_pos由主2服务器(Master)查出的状态值中确定。master_log_file对应File, master_log_pos对应Position。Mysql 5.x以上版本已经不支持在配置文件中指定主服务器相关选项。

    在mysql表中查询  SHOW MASTER STATUS 查询file position 

    如果遇到问题不成功,则需要重新设置slave命令如下:

    mysql>stop slave;

    mysql>reset slave;

    之后停止slave线程重新设置。成功后,则可以开启slave线程了。

    mysql>start slave;

    2.指定主2的同步源

    主2的同步源为主1 mysql服务器。

    在主2服务器上 使用changemaster语句

    mysql>stopslave;          //先停步slave服务线程,这个是很重要的,如果不这样做会造成以下操作不成功。

    指定主机的命令,主机操作后备机更新数据

    mysql>change master to

    >master_host='192.168.1.1',master_user='bak',master_password='bak',

    > master_log_file='ysql-bin.000003',master_log_pos=107;

    注:master_log_file,master_log_pos由主服务器(Master)查出的状态值中确定。master_log_file对应File, master_log_pos对应Position。Mysql 5.x以上版本已经不支持在配置文件中指定主服务器相关选项。

    六、查看同步状态

    在主1服务器上查看主2服务器的状态(对于主1来说,主2就是slave;)用如下指令进行查看:

    mysql> show slave statusG

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

                 Slave_IO_State: Waiting for master to send event

                    Master_Host: 192.168.1.2

                    Master_User: bak

                    Master_Port: 3306

                  Connect_Retry: 60

                Master_Log_File: mysql-bin.000005

            Read_Master_Log_Pos: 107

                 Relay_Log_File: CO6-relay-bin.000004

                   Relay_Log_Pos: 253

          Relay_Master_Log_File: mysql-bin.000005

               Slave_IO_Running: Yes

              Slave_SQL_Running: Yes

                Replicate_Do_DB: test

            Replicate_Ignore_DB: mysql,information_schema

             Replicate_Do_Table:

         Replicate_Ignore_Table:

        Replicate_Wild_Do_Table:

    Replicate_Wild_Ignore_Table:

    查看下面两项值均为Yes,即表示设置从服务器成功。

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

    在主2服务器上查看主1服务器的状态(对于主2来说,主1就是slave;)用如下指令进行查看:

    mysql> show slave statusG

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

                 Slave_IO_State: Waiting for master to send event

                    Master_Host: 192.168.1.1

                    Master_User: bak

                    Master_Port: 3306

                  Connect_Retry: 60

                Master_Log_File: mysql-bin.000004

            Read_Master_Log_Pos: 536

                 Relay_Log_File: IT06-relay-bin.000004

                  Relay_Log_Pos: 253

          Relay_Master_Log_File: mysql-bin.000004

               Slave_IO_Running: Yes

              Slave_SQL_Running: Yes

                Replicate_Do_DB: test

             Replicate_Ignore_DB:mysql,information_schema,performance_schema

             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: 536

                Relay_Log_Space: 408

                Until_Condition: None

                 Until_Log_File:

                  Until_Log_Pos: 0

             Master_SSL_Allowed: No

    查看下面两项值均为Yes,即表示设置从服务器成功。

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

    七、测试

    在主1数据库的test库中建表写数据,查看主2数据库中是否有同步数据。再在主2数据库的test库中建表写数据,查看主1数据库中是否有同步数据。

    八、结论

    主—主数据库的双机热备操作比较复杂,遵循的原则是每一步必须都调试成功,否则下面就无法进行了。Mysql 5.x以上版本已经不支持在配置文件中指定主服务器相关选项。所以要使用changemaster语句,这一点很重要。

  • 相关阅读:
    ioi1998 Polygon
    [Noip模拟题]Seq
    [noip模拟]分组行动
    入门OJ:photo
    Sgu167 I-country
    入门OJ:简单的网络游戏
    入门OJ:Coin
    ATT&CK实战系列
    Metasploit Framework(二)
    RoarCTF 2019
  • 原文地址:https://www.cnblogs.com/chinaifae/p/10287227.html
Copyright © 2011-2022 走看看