搜档网
当前位置:搜档网 › MySQL复制实现互为主从双机热备

MySQL复制实现互为主从双机热备

MySQL复制实现互为主从双机热备

A B 为两台MySQL服务器,均开启二进制日志,数据库版本5.5.2

一、服务器参数

[A 服务器]

log-bin=mysql-bin

server-id = 1

binlog-do-db = test

binlog-ignore-db = mysql

replicate-do-db = test

replicate-ignore-db = mysql

master-host = 192.168.1.100

master-user = backup

master-password = 123

master-port = 3306

master-connect-retry = 10

#sync-binlog = 1

[B 服务器]

log-bin=mysql-bin

server-id = 2

binlog-do-db = test

binlog-ignore-db = mysql

replicate-do-db = test

replicate-ignore-db = mysql

master-host = 192.168.1.101

master-user = backup

master-password = 123

master-port = 3306

master-connect-retry = 10

#sync-binlog = 1

二、操作步骤

# A B 服务器停止同步

STOP SLAVE;

# A B 服务器清空Master日志

RESET MASTER;

# A 服务器授权同步账户

GRANT REPLICATION SLAVE ON *.* TO ‘backup’@'%’IDENTIFIED BY ’123′;

FLUSH PRIVILEGES;

# A B 服务器锁表(锁表状态下不能终止mysql进程,否则会失败)

FLUSH TABLES WITH READ LOCK;

# 如果使用SSH,需要重新开启,复制数据库文件。

tar -cvf /tmp/mysql-data.tar /usr/local/mysql/data

tar -xvf /tmp/mysql-data.tar /usr/local/mysql/data

# 查看A 服务器主机状态(记录二进制开始文件,位置)

SHOW MASTER STATUS;

# B 服务器锁表(锁表状态下不能终止mysql进程,否则会失败)

FLUSH TABLES WITH READ LOCK;

# 修改B 服务器配置

CHANGE MASTER TO MASTER_HOST=’192.168.1.100′,MASTER_USER=’backup’, MASTER_PASSWORD=’123′,MASTER_LOG_FILE=’binlog.000001′,MASTER_LOG_POS=107;

# 开启B 服务器同步进程

START SLAVE;

# 查看B 服务器同步状态是否正常

SHOW SLAVE STATUS;

# 查看B 服务器主机(记录二进制开始文件,位置)

SHOW MASTER STATUS;

# 修改A 服务器配置

CHANGE MASTER TO MASTER_HOST=’192.168.1.101′,MASTER_USER=’backup’,MASTER_PASSWORD=’123′,MASTER_LOG_FILE=’binlog.000001′,MASTER_LOG_POS=107;

# 开启A 服务器同步进程

START SLAVE;

# 分别查看A B 服务器同步状态,确定是否成功

SHOW SLAVE STATUS;SHOW MASTER STATUS;

# 解锁A B 服务器

UNLOCK TABLES;

# 数据测试分别在A B 服务器上创建表插入数据测试

USE test;

CREATE TABLE `test_aa` (

`id` int(10) unsigned NOT NULL auto_increment,

`string` varchar(30) NOT NULL DEFAULT ’0′,

`time` datetime NOT NULL DEFAULT ’00-00-00 00:00:00′,

PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

INSERT INTO `test_log_1` VALUES (”, ‘test_1′, NOW());

SELECT * FROM `test_log_1`;

CREATE DATABASE `test_db_1` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

注意:

1. 数据库目录下的https://www.sodocs.net/doc/3987472.html,的内容会覆盖命令行或https://www.sodocs.net/doc/3987472.html,f中指定的部分选项,更改配置需删除https://www.sodocs.net/doc/3987472.html,

2. https://www.sodocs.net/doc/3987472.html,f中的master配置在MySQL 6.0以后会取消,官方建议使用动态的CHANGE MASTER

3. 如果只指定ignore-db而不指定do-db。则创建数据库的操作也会同步。

互为同步配置实例:

1. A B 互为主从同步test, 不同步mysql:

两个数据库配置中均设置:binlog-do-db=test, binlog-ignore-db=mysql,replicate-do-db=test,replicate-ignore-db=mysql

2. A B 互为主从只同步test,不同步其他数据库,新创建的也不会同步

两个数据库配置中均设置:binlog-do-db=test,replicate-do-db=test

3. A B 互为主从不同步mysql, 同步其他数据库,譬如创建的新数据库也会同步

两个数据库配置中均设置:binlog-ignore-db=mysql,replicate-ignore-db=mysql

4. A B 互为主从同步所有数据库,包括新建的数据库

两个数据库配置中均不设置上述四项

相关主题