闲来无事讲一下mysql主从复制吧,, 也算是对数据库高可用的一种理解和笔记。
我用的环境 contents7.x;mysql5.7
其实这玩意我个人理解配置起来简单,就是用的过程中的注意的地方多一点多,比如延迟同步等等。
首先,保证有2个mysql服务器。
主服务器
第一步:查找主服务器mysql的my.cnf
第二步:配置my.cnf
#服务器id(要注意这个id只能唯一)
server-id=1
#二进制日志名
log_bin=master-bin
#日志索引名
log_bin_index=masger-bin.index
#同步的数据库名称(不写就是默认同步给的权限账号下所有的数据库)
binlod-do-db=数据库名称
#不同步的数据库名称(可以不写)
binlog-ignore-db=数据库名称
#三种二进制日志文件的格式(row,statement,mixed)
binlog-format=xxx
第三步:保存重启mysql。
第四步:给从服务器配置账号和权限。
1.可以看我之前发的帖子创建账号给权限什么的。
命令行登录mysql进去mysql -uroot -p
#创建用户
create user 'test1'@'%' identified by 'Test2020-Q@'
#给用户所有的表权限(给特定权限的去我翻我以前的文章看)
grant all on *.* to 'test1'@'%'
#拥有此权限可以查看从服务器,从主服务器读取二进制日志。
GRANT REPLICATION SLAVE ON *.* TO 'test1'@'%';
#刷新权限。必须
flush privileges
从服务器
第一步:一样的骚操作,先找从服务器mysql的my.cnf,完事看看里面的service_id是否是唯一的,不能跟主服务器或者其他从服务器的一致。
第二步:登录mysql进入命令行执行命令(带双引号的参数就是需要带不要去除)
CHANGE MASTER TO
MASTER_HOST='你的远程地址',
MASTER_USER='刚才配置的用户名',
MASTER_PASSWORD=密码',
这俩需要在主服务器mysql登录后执行show master status查看
MASTER_LOG_FILE='File的名称',
MASTER_LOG_POS=Position的行数;
第三步:执行开启同步的命令
start slave 开启同步
stop slave 关闭同步
reset slave和 reset slave all 重配,重置mysql主从同步的命令
---reset slave 仅清理master.info 和 relay-log.info 文件
---删除所有的relay log 文件,重启用一个新的relay log 文件。
---重置 MASTER_DELAY 复制延迟间隔为:0
---不清理内存里的同步复制配置信息
---不重置 gtid_executed or gtid_purged 参数值
reset slave all 功能和上面一样但是会立即清理内存里的同步配置信息
第四步:查询从服务器同步情况
从服务器mysql命令行执行 show slave status\G
这里面主要看几个值
salve_io_running 就是跟主服务做关联的 必须为yes才算成功
salve_sql_running 从服务器的sql的同步 必须为yes才算成功
Last_Errno 错误码
Last_Error 错误信息
有什么错百度百度,哈哈哈哈,困了,有时间再更新,哪里报错的私信。看到后我会回复。