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

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

实验环境:sql

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

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

1、安装数据库centos

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

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

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

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

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

1.# mysqladmin -u root -ppassword newpassword

Windows上面的是在dos下面进入到C:\Program Files\MySQL\MySQL Server 5.5\bin目录而后执行上面的命令。

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

mysql>flush privileges;

修改好以后,相互远程测试一下看是否可以相互远程。

3、主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 status\G

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

4、主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:\ProgramFiles\MySQL\MySQL 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 status\G

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

           File: mysql-bin.000004

       Position: 536

   Binlog_Do_DB: test

Binlog_Ignore_DB:mysql

1row in set (0.00 sec)

5、利用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='ysql-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以上版本已经不支持在配置文件中指定主服务器相关选项。

若是遇到问题不成功,则须要从新设置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以上版本已经不支持在配置文件中指定主服务器相关选项。

6、查看同步状态

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

mysql> show slave status\G

*************************** 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 status\G

*************************** 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

7、测试

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

8、结论

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

相关文章
相关标签/搜索