mysql数据库ab复制_Mysq实现AB复制主从模式

Mysql主从数据库设置

一、介绍

MYSQL数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好

MYSQL数据库提供了一种AB复制的机制。我们的从库所保存的数据必须和主库同步,也就

是主库和从库的数据是一模一样的。因此,我们要做到:对主库进行任何的操作都可以引发

从库进行相同的操作。这就是我们所说的MYSQL的AB复制。

下面的这个实验使用了我们上面刚刚介绍过的二进制日志。其原理是,从库去读取主库

的二进制日志文件,并按照主库的二进制文件的记录对从库进行同样的操作,以达到从库与

主库内容同步的效果。要想实现双机的热备首先要了解主从数据库服务器的版本的需求。首

先,MYSQL的版本都要高于3.2,还有一个基本的原则就是作为从数据库的数据库版本可以

高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。以下是实验文档:

环境介绍:主库 192.168.0.1 从库 192.168.0.2

二、mysql数据库同步方法

1、主库创建/etc/my.cnf,修改

里边的键值增加

server-id=1

log-bin=binlog_name

2、主库增加用户,用于从库读取主库日志。

mysql> grant replication slave,reload,super on *.* to slave@192.168.0.2 identified by '123456'

mysql> flush tables with read lock;

3、从库连接主库进行测试。mysql -u slave -p123456 -h 192.168.0.1

如果连接成功说明主库配置成功

4、停从库,修改从库/etc/my.cnf,增加选项:

server-id=2

master-host=192.168.0.1

master-user=slave

master-password=123456

5、启动从库,进行主从库数据同步

/opt/mysql/share/mysql/mysql start

/opt/mysql/bin/mysql -u root -p

mysql>load data from master;

说明:这一步也可以用数据库倒入或者直接目录考过来。

6、进行测试:

①主库查看当前存在的库

mysql> show databases;

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

| Database           |

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

| information_schema |

| discuz             |

| mysql              |

| mysqltest          |

| qqq                |

| sample             |

| test               |

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

7 rows in set (0.01 sec)

②从库查看当前存在库

mysql> show databases;

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

| Database           |

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

| information_schema |

| discuz             |

| mysql              |

| mysqltest          |

| qqq                |

| sample             |

| test               |

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

7 rows in set (0.01 sec)

说明两者中的数据保持了一致性

③主库创建表,

mysql> create database xxx;

Query OK, 1 row affected (0.00 sec)

打开从库,察看:

mysql> show databases;

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

| Database           |

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

| information_schema |

| discuz             |

| mysql              |

| mysqltest          |

| qqq                |

| sample             |

| test               |

| xxx                |

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

8 rows in set (0.00 sec)

说明主从数据库创建成功。

7、主从数据库相关命令:

slave stop; slave start ; 开始停止从数据库。

show slave status\G; 显示从库状态信息

show master status\G;显示主库状态信息

purge master logs to ’binlog.000004’; 此命令非常小心,删除主数据库没用的二进制日志文件。如果误删除,那么从库就没有办法自动更新了。

change master;从服务器上修改参数使用

另外,如果你当前操作的从库以前曾经与其他服务器建立过主从关系,你可能会发现即使你在my.cnf文件中更改了主服务器的位置,但是MSQL仍然在试图连接就旧的主服务器的现象。发生这种问题的时候,我们可以通过清除master.info这个缓存文件或者在mysql中通过命令来进行设置。方式如下:

a、删除master.info方法

这个文件位于数据文件存放目录里。默认是在/var/lib/mysql中的。你可以直接

将其删除,然后重新启动服务器。

b、mysql命令方法

如果你不方便重新启动服务器的话,那么就只能使用mysql命令来帮助你做到。

首先登录到主服务器上,查看当前服务器状态:

mysql> show master status\G;

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

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.003 | 73 | test | manual,mysql |

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

记录下File和Position的值。然后登录从服务器,进行如下操作:

mysql> slave stop;

mysql> CHANGE MASTER TO

-> MASTER_HOST='master_host_name', //主服务器的IP地址

-> MASTER_USER='replication_user_name', //同步数据库的用户

-> MASTER_PASSWORD='replication_password', //同步数据库的密码

-> MASTER_LOG_FILE='recorded_log_file_name', //主服务器二进制日志的文件名(前面要求记

录的参数)

-> MASTER_LOG_POS=recorded_log_position; //日志文件的开始位置(前面要求记录的参数)

mysql> slave start;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值