头条号nx配置文件mysql_mysql配置多主多从详细步骤及解析

这里以容器为例来做个实验

mysql版本是5.29

centos容器镜像

节点描述

节点ip

节点vip,对接业务

master1节点

172.17.0.6

vip:172.17.0.11

master2节点

172.17.0.7

slave1节点

172.17.0.8

同步 master1 的数据

vip:172.17.0.12

slave2节点

172.17.0.9

同步master2 的数据

slave3节点

172.17.0.10

用于专业的数据库备份

master1节点配置

[root@2cc95893a4c9 /]# cat /etc/my.cnf

[client]

port=3306

socket=/data/mysql/tmp/mysql.sock

#default-character-set = utf8

[mysqld]

############################ system  ##################################

server-id                                             = 1

port                                                  = 3306

user                                                  = mysql

read_only                                             = off

character-set-server                                  = utf8

socket                                                = /data/mysql/tmp/mysql.sock

datadir                                               = /data/mysql/data

basedir                                               = /data/mysql

auto-increment-increment        = 2  表示自增长字段每次增长的量,默认值是1,取值范围是1~65535.配置双主双从的话;两台的增长量都配置为2。

auto-increment-offset   = 1  表示自增长字段从哪个字开始,取值范围是1~65535。配置双主双从的话,两台分别配置为1和2.

......................................

.....................................

重启数据库 : /etc/init/mysqld restart

配置同步的账户:grant all privileges on *.* to repl@'%' identified by "123456";

更新:flush privileges;

如果是生产环境:最好将库锁住,仅仅允许读,以保证数据一致性;待主主同步环境部署后再解锁;

锁住后,就不能往表里写数据,但是重启mysql服务后就会自动解锁!

flush tables with read lock;  锁只读

查看master1上面二进制日志的详细信息

show  master status\G

------------------------------------------------   master 2  配置------------------------------------

xxxx】cat /etc/my.cnf

[client]

port=3306

socket=/data/mysql/tmp/mysql.sock

#default-character-set = utf8

[mysqld]

############################ system  ##################################

server-id                                             = 220

port                                                  = 3306

user                                                  = mysql

read_only                                             = off

character-set-server                                  = utf8

socket                                                = /data/mysql/tmp/mysql.sock

datadir                                               = /data/mysql/data

basedir                                               = /data/mysql

auto-increment-increment                              = 2

auto-increment-offset                                 = 2

.................................................

................................................

配置同步用户

grant replication slave,replication client on *.* to repl@'%' identified by "123465";   【解释:如果你之前是认为replication slave 是复制所必须的权限,那么你就错了,为了安全性一般都需要replication slave 。如果单独设置replication slave,replication client 复制其实都可以运行的。mysql有一些特殊的权限允许复制进程运行,运行在从服务器上的I/O线程创建了到master的连接,这就意味着必须在主服务器上创建一个用户并且需要授予特殊的权限。这样I/O线程就会一特定的身份连接到主服务器上并且读取二进制日志。但是需要说明的一点是,复制用户在主服务器上实际只需要replication  client  权限就可以运行的,这里授予replication  slave的原因是用于监视和管理复制账号需要这个权限,并且这两个功能(复制需要的权限,监视和管理复制账号权限)通常是一个账号在管理,而不是为了达到这两个目标而分别设置2个账号。】

刷新:flush privileges;

生产环境的话建议将库锁起来,只能读

flush tables with read lock;

查看master2的二进制日志情况

show master status;

--------------------------------------------  配置master1 同步 master2 的数据   -------------------------------------------------------------------

unlock tables; //先解锁,将对方数据同步到自己的数据库中用,当然了,如果之前就没有锁的话就不用解锁了。

slave stop;停slave同步,一般之前没有配置slave的话也不用这个操作。

change master to master_host='172.17.0.7',master_user='repl',master_password='12346',master_log_file='mysql-bin.000001',master_log_pos=430;   这个就是配置master1 去同步 master2 的数据了。

start slave; 开启slave同步。

--------------------------------------------  配置master2 同步 master1 的数据   -------------------------------------------------------------------

unlock tables; //先解锁,将对方数据同步到自己的数据库中用,当然了,如果之前就没有锁的话就不用解锁了。

slave stop;停slave同步,一般之前没有配置slave的话也不用这个操作。

change master to master_host='172.17.0.6',master_user='repl',master_password='12346',master_log_file='mysql-bin.000001',master_log_pos=430;   这个就是配置master1 去同步 master2 的数据了。

start slave; 开启slave同步。

--------------------------------------------  配置slave1 同步 master1 的数据   -------------------------------------------------------------------

unlock tables; //先解锁,将对方数据同步到自己的数据库中用,当然了,如果之前就没有锁的话就不用解锁了。

slave stop;停slave同步,一般之前没有配置slave的话也不用这个操作。

change master to master_host='172.17.0.6',master_user='repl',master_password='12346',master_log_file='mysql-bin.000001',master_log_pos=430;   这个就是配置master1 去同步 master2 的数据了。

start slave; 开启slave同步。

--------------------------------------------  配置slave2 同步 master2 的数据   -------------------------------------------------------------------

unlock tables; //先解锁,将对方数据同步到自己的数据库中用,当然了,如果之前就没有锁的话就不用解锁了。

slave stop;停slave同步,一般之前没有配置slave的话也不用这个操作。

change master to master_host='172.17.0.7',master_user='repl',master_password='12346',master_log_file='mysql-bin.000001',master_log_pos=430;   这个就是配置master1 去同步 master2 的数据了。

start slave; 开启slave同步。

--------------------------------------------  配置slave3 同步 master1 的数据   -------------------------------------------------------------------

unlock tables; //先解锁,将对方数据同步到自己的数据库中用,当然了,如果之前就没有锁的话就不用解锁了。

slave stop;停slave同步,一般之前没有配置slave的话也不用这个操作。

change master to master_host='172.17.0.6',master_user='repl',master_password='12346',master_log_file='mysql-bin.000001',master_log_pos=430;   这个就是配置master1 去同步 master2 的数据了。

start slave; 开启slave同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值