双主mysql配置

1、环境说明

192.168.228.15   test1

192.168.228.16   test2

以上2台机器在cetos 6.5下,已安装mysql5.5.37

 

2、配置mysql

1) 在两台机器上给对方授权

192.168.228.15上授权test2

mysql>GRANT ALL PRIVILEGES ON *.* TO 'rep1'@'192.168.228.16' IDENTIFIED BY 'password';

192.168.228.16上授权给test1

mysql>GRANT ALL PRIVILEGES ON *.* TO 'rep1'@'192.168.228.15' IDENTIFIED BY 'password';

2)配置主配置文件

  配置数据库配置文件my.cnf,系统默认位置:/etc/my.cnf

源码编译安装,按照安装路径位置查找

test1

[mysqld]

server-id = 1

log-bin = mysql-bin

log-slave-updates

auto-increment-increment = 2

auto-increment-offset = 1

binlog-ignore-db=mysql

replicate-ignore-db=mysql

 

test2

[mysqld]

server-id = 2

log-bin = mysql-bin

log-slave-updates

auto-increment-increment = 2

auto-increment-offset = 2

binlog-ignore-db=mysql

replicate-ignore-db=mysql 

 

注:二库都只有server-id不同和 auto-increment- offset不同         

    auto-increment-offset是用来设定数据库中自动增长的起点的,回为这两能服务器都设定了一次自动增长值2,所以它们的起点必须得不同,这样才能避免两台服务器数据同步时出现主键冲突

    replicate-do-db 指定同步的数据库,我们只在两台服务器间同步mydb数据库

binlog-do-db=  #需要记录二进制日志的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项 

binlog-ignore-db=mysql #不需要记录进制日志的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-ignore-db选项 

replicate-do-db= #需要进行同步的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项 

replicate-ignore-db=mysql,information_schema #不需要同步的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项 

#同步参数

#保证slave挂在任何一台master上都会接收到另一个master的写入信息 

log-slave-updates 

sync_binlog=1 

auto_increment_offset=2 

auto_increment_increment=2 

slave-skip-errors=all #过滤掉一些没啥大问题的错误 

另:auto-increment-increment的值应设为整个结构中服务器的总数,本案例用到两台服务器,所以值设为2

#配置完成后,重启两台数据库
 service mysqld restart  或者命令重启(源码编译安装时)

3同步两台数据库

本列以安装的默认数据库test测试


分别在两台数据库中,执行下命令,查看potion,以及binlog。(因为我的两台数据库都是新安装的,所以binlog以及potion都一样,如果是使用已有的数据库,首先需要把两台数据库同步,可以使用mysqldump工具。然后查看binlog,以及potion的位置。)

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 |      324 |              |                  | 
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)



##在 test1  (若是配置主从复制,以test1为主服务器,此处不用配置)
mysql> stop slave;
mysql> CHANGE MASTER TO master_host='192.168.228.16', master_user='rep1', mysql> master_password='password', MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=324;
mysql> start slave;

##在 test2 mysql> stop slave;
mysql> CHANGE MASTER TO master_host='192.168.228.15', master_user='rep1', master_password='password', MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=324; (若是配置主从复制,此处的MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=324为主服务器test1的状态信息)

mysql> start slave;

##分别查看两台数据库的slave状态。

mysql> show slave status\G

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

##都为yesok

4、验证mysql主主

 

###好了现在我们来验证吧。。。

 

test1test数据库中创建表

mysql>use test;

mysql>create table haifengtest ( name varchar(15) not null, city varchar(15) not null,  birth date not null);

 

test2mysqldb数据库中能够查看到该表

 

mysql> show tables;

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

| Tables_in_mysqldb |

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

| haifengtest       | 

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

1 row in set (0.00 sec)

 

test2中向表haifengtest插入数据

 

insert into haifengtest values ("haifeng","beijing","1986-12-09");

 

test1中查看表haifengtest

 

mysql> select * from haifengtest;

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

| name    | city    | birth      |

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

| haifeng | beijing | 1986-12-09 | 

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

1 row in set (0.00 sec)

 

###好了 第一步 mysql主主大公告成。。。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值