mysql 5.6.22 主备搭建

来源:互联网 发布:山东数据恢复 编辑:程序博客网 时间:2024/05/18 00:02

环境

mysql  Ver 14.14 Distrib 5.6.22, for Linux (x86_64)

一、单向:主-->备10.224.149.25(主)    10.224.149.26(备)

注意 mysql 数据库版本数据库版本,或slavemaster版本


1、在主服务器上创建一个复制用户,并给予replication slave权限
mysql> grant replication slave on *.* to slave@10.224.149.26 identified by 'slave';
//刷新权限,使配置生效
mysql> flush privileges;

2、在主服务器创建测试数据库
mysql>use test
mysql> create table user(id int(4),name varchar(20)); 
mysql> insert into user values(1,"mary"); 
mysql> insert into user values(2,"joe");

3、配置主服务器的my.cnf
// mysql客户端程序不要退出,在/etc/my.cnf配置文件中添加以下内容
log-bin=mysql-bin                                             #启动二进制日志系统
log-bin = /data/mysqldb/log/mysql-bin.log    #设定生成log的文件名和路径,目录需要给mysql用户权限
server-id=1                                                          #本机数据库ID,标识为主服务器
binlog-do-db=test                                              #二进制需要同步的数据库名
binlog-ignore-db=mysql,log                              #忽略同步的数据库名

// 创建更新日志的目录并给mysql用户的权限
mkdir -p /data/mysqldb/log/
chown -R mysql.mysql /data/mysqldb/log/

4、同步数据库dump
//执行FLUSH TABLES WITH READ LOCK语句清空所有表和块写入语句
mysql> FLUSH TABLES WITH READ LOCK; 

在主服务器导出数据库, 并将本地需要同步数据库打包拷贝到从数据库上
mysqldump -h127.0.0.1 -p3306 -uroot -p test > /data/mysqldb/test.sql

//对主服务器进行解锁
mysql> UNLOCK TABLES;
//重启mysql服务
service mysqld restart

5、配置从服务器
// 配置slave服务器/etc/my.cnf文件,添加以下内容:
server-id=2
replicate-do-db =test
replicate-ignore-db=mysql,log

//将主服务器生成的dump文件拷贝到从服务器,并导入
mysql -uroot -p -Dtest < /data/mysqldb/test.sql 

//重启mysql服务
service mysqld restart

6、启动主备同步
//在主服务器上获取binlog文件名和日志位
mysql> show master status\G
File: mysql-bin.000003
Position: 120

//在从服务器上动态更新主服务器信息
mysql> CHANGE MASTER TO
MASTER_HOST='10.224.149.25',
MASTER_USER='slave',
MASTER_PASSWORD='slave',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=120;

//启动slave线程
mysql> START SLAVE;

//验证slave状态
mysql> show slave status\G
Slave_IO_Running: Yes 
Slave_SQL_Running: Yes

7、验证配置
//如果怀疑主从数据不一致,可以重复上面的dump拷贝导入,或者在从服务器执行命令同步
mysql> stop slave;
mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=120;  
// 根据上面主服务器的show master status的结 果,进行从服务器的二进制数据库记录回归, 达到同步的效果
mysql> start slave; 

8、测试
在主服务器上对同步数据库进行表的创建和数据修改操作,观察从服务器是否正常同步

二、双主配置:主<-->主10.224.149.25(原主)    10.224.149.26(原备)
1、修改原slave服务器配置
// 配置原slave服务器/etc/my.cnf文件,添加红字内容:
server-id=2
replicate-do-db =test
replicate-ignore-db=mysql,log
log_bin = /data/mysqldb/log/mysql-bin.log
binlog-do-db =test
binlog-ignore-db =mysql,log

// 创建更新日志的目录并给mysql用户的权限
mkdir -p /data/mysqldb/log/
chown -R mysql.mysql /data/mysqldb/log/

2、重启mysql服务,创建同步帐号
service mysqld restart
mysql> grant replication slave on *.* to slave@10.224.149.25 identified by 'slave';
//刷新权限,使配置生效
mysql> flush privileges;

3、修改原master服务器配置
// 配置原master服务器/etc/my.cnf文件,添加红字内容:
log-bin=mysql-bin
log-bin = /data/mysqldb/log/mysql-bin.log
server-id=1
binlog-do-db=test
binlog-ignore-db=mysql,log
replicate-do-db =test
replicate-ignore-db =mysql,log

//重启mysql服务
service mysqld restart

4、启动同步
//在原slave服务器上获取binlog文件名和日志位
mysql> show master status\G
File:mysql-bin.000002
Position: 410

//在原master服务器上动态更新主服务器信息
mysql> CHANGE MASTER TO
MASTER_HOST='10.224.149.26',
MASTER_USER='slave',
MASTER_PASSWORD='slave',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=410;

//启动slave线程
mysql> START SLAVE;

//验证slave状态
mysql> show slave status\G
Slave_IO_Running: Yes 
Slave_SQL_Running: Yes

5、测试
在两台服务器上对同步数据库进行表的创建和数据修改操作,观察对端服务器是否正常同步

0 0
原创粉丝点击