绝对经典,看了必会 linux中部署mysql主从同步示例详解

准备两台服务器并安装MySQL5.7master服务器

192.168.254.132
slave服务器
192.168.254.136
确保两台服务器安装的mysql版本一致,本测试使用的是mysql5.7,登录mysql数据库,使用如下命令查看mysql数据库版本
[root@localhost ~]# mysql -u root -pEnter password: mysql> show variables like '%version%';
绝对经典,看了必会 linux中部署mysql主从同步示例详解

文章插图
 
master服务器配置流程1、登录mysql数据库
[root@localhost ~]# mysql -u root -pEnter password:
绝对经典,看了必会 linux中部署mysql主从同步示例详解

文章插图
 
2、创建数据库,数据库名称为:TONGBU
【绝对经典,看了必会 linux中部署mysql主从同步示例详解】mysql> create database TONGBU;3、进入TONGBU数据库并创建表TB1
mysql> use TONGBU;mysql> create table TB1(id varchar(60),name varchar(100));4、修改配置/etc/my.cnf文件
绝对经典,看了必会 linux中部署mysql主从同步示例详解

文章插图
 
修改的具体参数如下:
server-id=1log-bin=mysql-binbinlog-do-db=TONGBUbinlog-ignore-db=mysqlsync_binlog=1binlog_checksum=nonebinlog_format=mixed提示
[mysqld] server-id=1 #数据库唯一ID,主从的标识号绝对不能重复 。
log-bin=mysql-bin #开启bin-log,并指定文件目录和文件名前缀
binlog-do-db=liting #需要同步liting数据库 。如果是多个同步库,就以此格式另写几行即可 。如果不指明对某个具体库同步,就去掉此行,表示同步所有库(除了ignore忽略的库) 。
binlog-ignore-db=mysql #不同步mysql系统数据库 。如果是多个不同步库,就以此格式另写几行;也可以在一行,中间逗号隔开 。
sync_binlog = 1 #确保binlog日志写入后与硬盘同步
binlog_checksum = none #跳过现有的采用checksum的事件,mysql5.6.5以后的版本中binlog_checksum=crc32,而低版本都是binlog_checksum=none
binlog_format = mixed #bin-log日志文件格式,设置为MIXED可以防止主键重复 。
在主服务器上最重要的二进制日志设置是sync_binlog,这使得mysql在每次提交事务的时候把二进制日志的内容同步到磁盘上,即使服务器崩溃也会把事件写入日志中 。
sync_binlog这个参数是对于MySQL系统来说是至关重要的,他不仅影响到Binlog对MySQL所带来的性能损耗,而且还影响到MySQL中数据的完整性 。对于"sync_binlog"参数的各种设置的说明如下:
sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘 。
sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘 。
在MySQL中系统默认的设置是sync_binlog=0,也就是不做任何强制性的磁盘刷新指令,这时候的性能是最好的,但是风险也是最大的 。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失 。而当设置为“1”的时候,是最安全但是性能损耗最大的设置 。因为当设置为1的时候,即使系统Crash,也最多丢失binlog_cache中未完成的一个事务,对实际数据没有任何实质性影响 。
从相关测试来看,对于高并发事务的系统来说,“sync_binlog”设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多 。
5、重置mysql数据库
[root@hadoop4 ~]# systemctl restart mysqld.service6、授权给slave查同步权限
mysql> grant replication slave on *.* to slave@192.168.254.136 identified by "123456";注意,注意,注意:::
授权的用户:slave,不是从服务器的用户名,也不是从服务器中Mysql登录用的用户名,也是主服务器为从服务器自定义开户的一个可供从服务读(或者说是同步数据)数据用的一个用户名,可以自定义,但是要求从服务器在my.cnf配置文件中配置的master-user参数的名称一致,
如:master-user=slave #该名称为主服务器上可以进行同步的用户名,也是在此处授权的用户;
另外这一步容易出现一个异常,异常如下
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements原因是不满足密码设置的策略,这里需要两个命令来设置一下slave服务器mysql密码设置的策略
mysql> set global validate_password_policy=0;mysql> set global validate_password_length=1;


推荐阅读