• 全世界谁倾听你
  • 网站正式加入腾讯404公益
  • 霸气的藏獒
  • Apache为什么二级域名不能加载证书呢?
  • 将网站做了一个微信小程序了,等待审核!
  • 一张图完美讲述VIM命令
  • 生活中不简简单单是做对的事,更是要把对的事情做对,如果还有一层,那么应该尝试把错的事情也做对! by 尼古拉斯·拉布拉卡
  • 123木头人
  • Windows命令提示符中统计行数
  • 一张图看懂上海17区县名字来源

Mysql的主主复制

LINUX IT敢客 5个月前 (01-03) 36684次浏览 已收录 2个评论 扫描二维码

        在上一文中,讲述了详细安装 mysql 的过程,
这一篇,我们讲述 mysql 的主主复制!

        原理讲述,不同于 mysql 主从复制的地方就是两台 mysql 都是主,也都是从,所以,就要分别为对方创建复制账户。都启动 slave 即可。

一、安装准备
软件环境:Mysqldb1   192.168.1.150
                 Mysqldb2   192.168.1.151
修改对应的 my.cnf
Mysqldb1   192.168.1.150 上面的 my.cnf 内容如下

[client]
port            = 3306
socket          = /tmp/mysql.sock
[mysqld]
server-id = 1   #这是主机的标志
log-bin = mysql-bin
binlog-ignore-db = mysql,information_schema #忽略写入 binlog 日志的库
auto-increment-increment = 2 #字段变化增量值
auto-increment-offset = 1 #初始字段 ID 为 1
slave-skip-errors = all #忽略所有复制产生的错误 
port            = 3306
socket          = /tmp/mysql.sock
datadir         =/data/mysqldata
basedir         =/home/mysql/mysql
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 20M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
#robbin
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1

#Application Setting
lower_case_table_names=1
innodb_file_per_table
max_connections= 1000   
interactive_timeout=28800000  
wait_timeout=28800000

#active-standby

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

Mysqldb2   192.168.1.151 上面的 my.cnf 内容如下

[client]
port            = 3306
socket          = /tmp/mysql.sock
[mysqld]
server-id = 2  #这是备机标志
log-bin = mysql-bin
binlog-ignore-db = mysql,information_schema #忽略写入 binlog 日志的库
auto-increment-increment = 2 #字段变化增量值
auto-increment-offset = 2 #初始字段 ID 为 1
slave-skip-errors = all #忽略所有复制产生的错误 
port            = 3306
socket          = /tmp/mysql.sock
datadir         =/data/mysqldata
basedir         =/home/mysql/mysql
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 20M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
#robbin
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1

#Application Setting
lower_case_table_names=1
innodb_file_per_table
max_connections= 1000   
interactive_timeout=28800000  
wait_timeout=28800000

#active-standby

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

注意以上 server-id 的值

二、重启 mysql
两台数据库都执行
service mysqld restart

三、创建复制用户
Mysqldb1   192.168.1.150 和 Mysqldb2   192.168.1.151 都进入 mysql
mysql -uroot -pxxxx
show master status
在 192.168.1.150 显示为

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show master status;
+------------------+----------+--------------+--------------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB         | Executed_Gtid_Set |
+------------------+----------+--------------+--------------------------+-------------------+
| mysql-bin.000004 |      267 |              | mysql,information_schema |                   |
+------------------+----------+--------------+--------------------------+-------------------+
1 row in set (0.00 sec)
mysql>

在 192.168.1.151 显示为

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show master status;
+------------------+----------+--------------+--------------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB         | Executed_Gtid_Set |
+------------------+----------+--------------+--------------------------+-------------------+
| mysql-bin.000004 |      267 |              | mysql,information_schema |                   |
+------------------+----------+--------------+--------------------------+-------------------+
1 row in set (0.00 sec)
mysql>

分别记录住上面的信息
在 192.168.1.150 上继续操作;

mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.151' IDENTIFIED BY 'replication';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> change master to
    -> master_host='192.168.1.151',
    -> master_user='replication',
    -> master_password='replication',
    -> master_log_file='mysql-bin.000004',
    -> master_log_pos=267;
start slave;
Query OK, 0 rows affected, 2 warnings (0.01 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

在 192.168.1.151 上继续操作;

mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.1.150' IDENTIFIED BY 'replication';
Query OK, 0 rows affected (0.00 sec)
mysql> change master to
    -> master_host='192.168.1.150',
    -> master_user='replication',
    -> master_password='replication',
    -> master_log_file='mysql-bin.000004',
    -> master_log_pos=267;
Query OK, 0 rows affected, 2 warnings (0.00 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

注意以上 ip 都写对方的 ip 地址。

四、状态检查
两边都输入
show slave status\G;
检查以下两项是不是都是 YES,如是,则表示配置完成。

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

五、测试
在其中一台中执行一个 sql,最好是建库建表插数据类的操作,然后观察另一台是否有数据变化。

至此,完毕。


IT 敢客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Mysql 的主主复制
喜欢 (6555)
[313176056@qq.com]
分享 (0)
IT敢客
关于作者:
“我所做的一切都是为了方便我的生活~~~“
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(2)个小伙伴在吐槽
  1. 很好很详细! :sad:
    IT民工2018-01-03 20:28 回复 Linux | Chrome 42.0.2311.154
    • IT敢客
      欢迎指出不足之处!
      果果君2018-01-03 20:32 回复 Mac OS X | Safari浏览器 6531.22.7