mysql双主键_MySql高可用学习(二):linux下mysql主主(双主)配置

mysql主主同步和主从同步的原理是一样,两台mysql互为主从就可以了。

修改my.cnf

主从库都加上主键自增规则,避免主从同步ID重复的问题,不过主库从1开始单数,从库从2开始双数

[client]

port=3306

socket=/test/mysql/mysql/mysql1.sock

[mysqld]

user=mysql

basedir =/test/mysql

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

datadir=/test/mysql/data

port=3306

#服务器唯一标识,注意不要重复了

server_id=mysql1

socket=/test/mysql/mysql.sock

log-output=file

slow_query_log = 1

long_query_time = 1

slow_query_log_file = /test/mysql/log/slow.log

log-error = /test/mysql/log/error.log

# 复制过滤:不需要备份的数据库(MySQL库一般不同步)

#binlog-ignore-db=mysql

# 主从复制的格式(mixed,statement,row,默认格式是 statement)

binlog_format=mixed

# 二进制日志自动删除/过期的天数。默认值为 0,表示不自动删除。

expire_logs_days=7

## 跳过主从复制中遇到的所有错误或指定类型的错误,避免 slave 端复制中断。

## 如:1062 错误是指一些主键重复,1032 错误是因为主从数据库数据不一致

slave_skip_errors=1062

# log_slave_updates 表示 slave 将复制事件写进自己的二进制日志

log_slave_updates=1

#启用二进制日志

log-bin=mysql-bin

# 主键自增规则,避免主从同步ID重复的问题

auto_increment_increment=2

auto_increment_offset=1

# 作为从服务器时的中继日志

relay_log=mysql-relay-bin

ps:一定要注意设置主键自增偏移量的问题,避免id重复!!!

重启mysql

mysql1配置同步mysql2

首先连接mysql2查看主库信息

[root@localhost mysql]# mysql -u root -p -S mysql1.sock

Enter password:

mysql> show master status;

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

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| mysql2-bin.000001 | 154 | | mysql | |

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

1 row in set (0.00 sec)

接着连接mysql2,配置同步信息

mysql> change master to master_host='127.0.0.1',master_user='repl_user', master_password='123456', master_port=3307, master_log_file='mysql2-bin.000001', master_log_pos=154, master_connect_retry=30;

启动同步

mysql> start slave;

查看从库信息

mysql> show slave status \G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 127.0.0.1

Master_User: mysql

Master_Port: 3307

Connect_Retry: 30

Master_Log_File: mysql2-bin.000001

Read_Master_Log_Pos: 154

Relay_Log_File: mysql1-relay-bin.000014

Relay_Log_Pos: 369

Relay_Master_Log_File: mysql2-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

可以看到IO读写线程Slave_IO_Running 和 SQL重做线程Slave_SQL_Running 都为 yes,表示已经正常执行了!

测试同步情况

mysql> use test;

#mysql2创建测试表

mysql> CREATE TABLE `t_test2` (

-> `id` int NOT NULL AUTO_INCREMENT ,

-> `content` varchar(20) NULL ,

-> PRIMARY KEY (`id`)

-> );

Query OK, 0 rows affected (0.11 sec)

mysql> INSERT INTO `t_test2` (`content`) VALUES ('test21'),('test22'),('test23'),('test24');

Query OK, 4 rows affected (0.01 sec)

Records: 4 Duplicates: 0 Warnings: 0

mysql> select * from t_test2;

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

| id | content |

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

| 1 | test21 |

| 3 | test22 |

| 5 | test23 |

| 7 | test24 |

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

4 rows in set (0.02 sec)

#下面登陆mysql1查询

mysql> select * from t_test2;

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

| id | content |

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

| 1 | test21 |

| 3 | test22 |

| 5 | test23 |

| 7 | test24 |

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

4 rows in set (0.02 sec)

数据已经同步过来了!

接下来可以再切换到mysql1新增数据,然后在mysql2上查询,数据也同步过来了,ok,简单的双主同步就搞定了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值