Linux环境下Mysql5.7主从配置
MySQL主从同步的机制:
一、MySQL同步的流程大致如下:
1、主服务器(master)将变更事件(更新、删除、表结构改变等等)写入二进制日志(master log)。
2、从服务器(slave)的IO线程从主服务器(binlog dump线程)获取二进制日志,并在本地保存一份自己的二进制日志(relay log)
3、从服务器的SQL线程读取本地日志(relay log),并重演变更事件。
二、MySQL主从同步的作用:
1、可以作为一种备份机制,相当于热备份(在从备份,避免备份期间影响主服务器服务)
2、可以用来做读写分离,均衡数据库负载(主写从读)
3、当主服务器出现问题时,可以切换到从服务器。
环境
服务器:contos7.6
mysql版本:5.7.33
主库ip:10.255.53.46
从库ip:10.255.53.47
一、主库配置
1、打开主库my.cnf,编辑配置如下内容:
vim /etc/my.cnf
[mysqld]
lower_case_table_names=1
character-set-server=utf8
#开启日志
log-bin = mysql-bin
#设置服务id,主从不能一致,一般设置为ip最后一段
server-id = 46
#设置需要同步的数据库
binlog-do-db=mypay
#屏蔽系统库同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
2、授权主从复制专用账号
登录主库,执行如下命令
#创建同步帐号db_sync,密码db_sync
GRANT REPLICATION SLAVE ON *.* TO 'db_sync'@'%' IDENTIFIED BY 'db_sync';
#更新数据库权限
flush privileges;
3、查询master的状态
show master status;
记录一下File信息和Position信息
从库配置
1、打开从库my.cnf,编辑配置如下内容:
vim /etc/my.cnf
[mysqld]
lower_case_table_names=1
character-set-server=utf8
#开启日志
log-bin = mysql-bin
#设置服务id,主从不能一样,一般设置为ip最后一段
server-id = 47
#主从库名相同,设置需要同步的数据库
#replicate_wild_do_table=mypay.%
#从库端替换库名
replicate_rewrite_db=mypay -> mypay-slave
#设置需要同步的数据库
replicate_wild_do_table=mypay-slave.%
#屏蔽系统库同步
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
2、执行同步命令
根据主库信息,执行同步命令。MASTER_LOG_FILE为File信息、MASTER_LOG_POS为Position信息,从前文记录的信息中读取。
#设置主数据库ip,同步帐号密码,同步位置
CHANGE MASTER TO MASTER_HOST='10.255.53.46',MASTER_PORT=3306,MASTER_USER='db_sync', MASTER_PASSWORD='db_sync',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=1529;
#开启同步功能
mysql>start slave;
3、检查从数据库状态
show slave status
当然当你执行完最后一条代码看到两个YES的时候就说明success!