www.350.vipmysql主从复制笔记,搭建主从同步

性能更好的新服务器申请下来了,我们决定在2台新服务器上使用mysql5.7,并且使用主从同步、读写分离架构,很不幸这个任务落到了我的头上。读写分离是在业务代码中实现的,在此不做详述,介绍一下我搭建MySQL主从的过程。

一:测试环境介绍

 

     
 主从复制测试环境是ubuntu+mysql5.7,master服务器ip是192.168.71.135,slave服务器ip是192.168.71.137,ubuntu环境是从一台已配置好环境的服务器克隆的。

环境介绍:

二:mysql主从配置

Master
10.20.66.150

1:)  master配置

Slave 
  10.20.66.151

a 在mysql
目录下(/etc/mysql),mysql.cnf文件中添加server-id和Log-bin.主从服务器的server-id不能相同

端口都是3306

log-bin=mysql-bin

 

server-id=100

一.修改主库的配置
vi /etc/my.cnf

www.350.vip 1

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

init_connect='SET collation_connection = utf8mb4_unicode_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake

server-id=2
log-bin=log
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys

设置好后,使用show master status;查询一下状态

需要注意的点:

www.350.vip 2

1.为了兼容emoji等特殊字节符,配置中使用utf8mb4编码

设置从服务器连接的账号,密码等

2.与主从相关的配置在整个配置的最下边,主库和从库的server-id必须不同

配置连接用户

3.binlog-ignore-db设置不需要同步的库

GRANT REPLICATION SLAVE ON *.* to ‘mysql账号’@’%’ identified by
‘密码’;这里是测试,没有指定从服务器的ip.如需指定ip,执行下面一个指令

 

GRANT REPLICATION SLAVE ON *.* to ‘mysql账号’@’192.168.71.137’
identified by ‘密码’;

二.创建用于主从同步的账户

配置好后记录重启mysql.

1.登录MySQL 
  mysql -uroot -p

2:)配置从数据库

2.create
user ‘sync’@’%’ identified by ‘Sync!0000’;    (5.7要求密码必须含有大小写英文,符号和数字)

2.1  Slave的配置与master类似(配置文件名称:mysql.cnf,在/etc/mysql目录,你的环境可能不是该目录),你配置完成后仍然需要重启slave的MySQL。配置参数如下:
log_bin= mysql-bin
server_id= 110
relay_log=mysql-relay-bin
log_slave_updates=1
read_only=1
server_id是必须的,而且唯一。slave没有必要开启二进制日志,但是在一些情况下,必须设置,例如,如果slave为其它slave的master,必须设置bin_log。在这里,我们开启了二进制日志,而且显示的命名(默认名称为hostname,但是,如果hostname改变则会出现问题)。
relay_log配置中继日志,log_slave_updates表示slave将复制事件写进自己的二进制日志(后面会看到它的用处)。
有些人开启了slave的二进制日志,却没有设置log_slave_updates,然后查看slave的数据是否改变,这是一种错误的配置。所以,尽量使用read_only,它防止改变数据(除了特殊的线程)。但是,read_only并是很实用,特别是那些需要在slave上创建表的应用。

3.grant
FILe on *.* to ‘sync’@’10.20.66.151’ identified by ‘Sync!0000’; 
 (赋予FILE权限,允许从从库ip访问主库)

 

4.grant
replication slave on *.* to ‘sync’@’10.20.66.151’ identified by
‘Sync!0000’;   (赋予主从同步权限)

2.2  配置完成后重新启动mysql

5.flush
privileges;

/etc/init.d/mysql restart

6.重启mysql

2.3   执行同步SQL语句

 

mysql> change master to
master_host=’192.168.71.135’,
master_user=’syncuser’,
master_password=’123456’,
master_log_file=’mysql-bin.000001’, — 该值来源于主库,执行show master
status 后的File字段
master_log_pos=443;
— 该值来源于主库,执行show master status
后的position字段**

三.查看主库状态,记录必要信息

2.4 查询从库状态

1.登录MySQL

start slave;

2.show
master status;
记录File和Position对应的信息,我这里是log.000006和151

show slave statusG

 

www.350.vip 3

四.修改从库配置

 

 

 三:主库SQL测试

发表评论

电子邮件地址不会被公开。 必填项已用*标注