配置mysql为主主复制步骤

Posted 向东1991

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置mysql为主主复制步骤相关的知识,希望对你有一定的参考价值。

mysql版本:mysql-5.6.24-solaris10-sparc-64bit.tar

操作系统:solaris 11g u10

操作用户:使用非root进行操作安装,a路服务器ip地址为192.168.1.1 b路ip地址为192.168.1.2(应改为实际ip地址)

1,安装mysql数据库

  

1)        在预定义目录下创建mysql数据库目录(我是用的目录为/usr/db/)

$mkdir mysql

2)        在mysql目录下创建data目录

$mkdir –p mysql_3306/data

3)        在mysql目录下解压mysql文件

$tar –xvf mysql-5.6.24-solaris10-sparc-64bit.tar

$mv mysql-5.6.24-solaris10-sparc-64bit mysql

4)        初始化data目录

$./mysql/scripts/mysql_install_db --basedir=/usr/sjes/mysql/mysql --datadir=/usr/sjes/mysql/mysql_3306/data/ --user=mor

5)        配置数据库启动文件

$vi /mysql/my.cnf

 

A路mysql配置内容下:(user 改为对应实际运行用户)

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

socket=/tmp/mysql.sock

pid-file=/usr/db/mysql_3306/mysql.pid

datadir=/usr/db/mysql_3306/data

basedir=/usr/db/mysql/

user=test

character-set-server=utf8

wait_timeout=31536000

interactive_timeout=31536000

server_id=1

B路mysql配置内容如下:

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

socket=/tmp/mysql.sock

pid-file=/usr/db/mysql_3306/mysql.pid

datadir=/usr/db/mysql_3306/data

basedir=/usr/db/mysql/

user=test

character-set-server=utf8

wait_timeout=31536000

interactive_timeout=31536000

server_id=2

 

6)        启动mysql数据库,并更改root默认密码

$ ./bin/mysqld_safe --defaults-file=/usr/db/mysql/my.cnf --user=test 2>&1 &

$mysql –u root –p(回车进入,不用输入密码)

mysql>use mysql;

mysql> update user set password=password(\'123456\') where user=\'root\';

mysql>flush privileges;

7)        在两路个数据库中创建数据库实例(分别在两个数据库中创建要进行同步的数据库)

mysql> create database test1 default character set \'utf8\';

mysql> create database test2 default character set \'utf8\';

mysql> create database test3 default character set \'utf8\';

 

以上步骤为创建 a/b两路数据库的具体过程,下面具体配置主主复制步骤:

2 配置主主主主复制

1)        停止mysql数据库

$./bin/mysqladmin shutdown –p 3306 –S /tmp/mysql.sock

2)        分别编辑a,b两路的mysql的配置文件

$vi my.cnf

A路my.cnf配置文件新增内容如下:(auto-increment-increment = 2 auto-increment-offset = 1 为防止在两路数据库添加数据造成自增字段的冲突,一般情况下只在一路进行添加、更新操作,另一路仅做作为读)

##################replication config#######################

log-bin = mysql-bin

auto-increment-increment = 2

auto-increment-offset = 1

replicate-do-db = test1

replicate-do-db = test2

replicate-do-db = test3

binlog-ignore-db = mysql

binlog-ignore-db = information_schema

slave-skip-errors=all

log-slave-updates

symbolic-links=0

skip-name-resolve

B路my.cnf配置文件新增内容如下:

##################replication config#######################

log-bin = mysql-bin

auto-increment-increment = 2

auto-increment-offset = 2

replicate-do-db = test1

replicate-do-db = test2

replicate-do-db = test3

binlog-ignore-db = mysql

binlog-ignore-db = information_schema

slave-skip-errors=all

log-slave-updates

symbolic-links=0

skip-name-resolve

3)        启动mysql数据库

$./bin/mysqld_safe --defaults-file=/usr/db/mysql/my.cnf --user=test 2>&1 &

4)        进入数据库并相互授权

     A路执行如下命令

mysql>GRANT ALL PRIVILEGES ON *.* TO \'root\'@\'192.168.1.2\' IDENTIFIED BY ‘123456’;

mysql>flush privileges;

  B路执行如下命令

mysql>GRANT ALL PRIVILEGES ON *.* TO \'root\'@\'192.168.1.1\' IDENTIFIED BY ‘123456’;

mysql>flush privileges;

5)        查看授权是否成功

mysql> show grants for root@\'192.168.1.1\';

        

6)        互告bin-log信息

     A路执行如下命令:

mysql> show master status;

 

B路执行如下命令:

mysql> show master status;

 

 

     A路执行如下命令

mysql> change master to master_host=\'192.168.1.2\',master_user=\'root\',master_password=\'123456\',master_log_file=\'mysql-bin.000002\',master_log_pos=2626;

  B路执行如下命令

mysql> change master to master_host=\'192.168.1.1\',master_user=\'root\',master_password=\'123456\',master_log_file=\'mysql-bin.000002\',master_log_pos=3625;

7)        在a,b两路上启动复制

mysql>start slave;

 

8)        在a,b两路上查看复制状态

     A路复制状态:

mysql> show slave status\\G

 

 

B路复制状态

 

 

Slave_IO_Running: Yes
Slave_SQL_Running: Yes两个值均为yes则表示复制链接正常

9)        测试复制

在a路数据库中执行如下命令: 

mysql>use test;

mysql> CREATE TABLE `admin_info` (

`username` varchar(32) NOT NULL,

`password` varchar(32) DEFAULT NULL,

PRIMARY KEY (`username`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

mysql>show tables;

在b路数据库中查看表结构是否同步;

在b路数据库中执行如下命令:

mysql>INSERT INTO `admin_info` VALUES (\'admin\',\'system\',\'25d55ad283aa400af464c76d713c07ad\');

在a路数据库中查看记录是否同步。

 

以上为进行mysql配置主主复制的全过程,当两边复制出现问题时,许重新执行2-(6)中的步骤。

以上是关于配置mysql为主主复制步骤的主要内容,如果未能解决你的问题,请参考以下文章

MySQl5.6主主复制配置

mysql主主复制汇总整理

mysql数据库的主主复制和半同步复制

Mysql实现数据库主从复制主主复制半同步复制

配置mysql为主主复制步骤

转载-Mysql主主复制架构配置