Mysql主从同步
Posted 小宋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql主从同步相关的知识,希望对你有一定的参考价值。
一、mysql Replication介绍
MySQL Replication
Replication可以实现将数据从一台数据库服务器(master)复制到一或多台数据库服务器(slave)
默认情况下属于异步复制,无需维持长连接 通过配置,可以复制所有的库或者几个库,甚至库中的一些表 是MySQL内建的,本身自带的
三个步骤:
(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
(2) slave将master的binary log events拷贝到它的中继日志(relay log);
(3) slave重做中继日志中的事件,修改salve上的数据。
二、MySQL的主从配置
数据库的主从配置
1、准备和注意事项
MySQL的主从复制是通过binlog日志来实现的, 主从复制中的"主"指的是MySQL主服务器上的数据库, "从"指的是MySQL从服务器上的数据库,且这种复制是基于数据库级别的, 为此从服务器中的数据库名称必须和主服务器中的数据库名称保持一致,那么,要想实现主从复制, 我们至少要有两个MySQL服务器 (最好是两个MySQL服务器分别位于不同的主机上,或者在一个主机上安装两个MySQL,端口不同即可)。
安装5.8的
https://blog.csdn.net/Fanpei_moukoy/article/details/81054231
具体步骤
1、官网:https://dev.mysql.com/
2、拉到网页底部,找到自己操作系统的版本,这里我选择linux7版本,右侧有个download按钮,鼠标单击进入下载页面
在网页看到是否登录进行下载,我们不登录,看到下面提示“不,谢了,我直接下载”,不要单击,鼠标放在上面,单击右键选择复制链接,拿到链接地址
3、在终端中使用wget命令直接下载
wget https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
务必要http方式下载 ,不然本地安装失败
4、添加mysql yum库到系统—Adding the MySQL Yum Repository(因为下载是rpm格式包)
格式:sudo rpm xxx.rpm
5、yum repolist all | grep mysq 查看
6、使用命令yum install安装
sudo yum install mysql-community-server
-------------------------------------------------------------------------------------------------------------------------------------
上面的配置略过,一台linux 从新搭建2个mysql版本不同的端口
-------------------------------------------------------------------------------------------------------------------------------------
2、Mysql主服务器配置
2.1、修改my.conf文件
在[mysqld]
段下添加:
#主从复制的数据库的名字 binlog-do-db=master #忽略mysql数据库 binlog-ignore-db=mysql #启用二进制日志 log-bin=mysql-bin #服务器唯一ID,一般取IP最后一段 server-id=16
2.2、重启mysql服务
service mysqld restart
2.3、创建一个用于slave和master通信的用户账号即授权数据复制的用户,使用master分配的用户账号读取master二进制日志。
mysql> CREATE USER \'repl\'@\'192.168.199.198\' IDENTIFIED WITH mysql_native_password BY \'Ron_master_1\'; mysql> GRANT REPLICATION SLAVE ON *.* TO \'repl\'@\'192.168.199.198\';
2.4、刷新权限
mysql> FLUSH PRIVILEGES;
2.5、查询master的状态
mysql> show master status;
注意:这里会生成二进制文件,mysql-bin.000004,指明了position为120,Binlog_Do_DB是master,小编就在这里出了错误,修改了my.conf后,没有重新启动mysql的服务,就没有产生新的二进制文件。
3、从库配置
3.1、修改my.conf文件
mysql>change master to master_host=\'192.168.137.16\',master_port=3306,master_user=\'backup\',master_password=\'123456\',master_log_file=\'mysql-bin.000004\',master_log_pos=120;
3.2、配置连接
mysql>change master to master_host=\'192.168.137.16\',master_port=3306,master_user=\'backup\',master_password=\'123456\',master_log_file=\'mysql-bin.000004\',master_log_pos=120;
注意语句中间不要断开,master_port为mysql服务器端口号(无引号),master_user为执行同步操作的数据库账户,“120”无单引号(此处的120就是show master status 中看到的position的值,这里的mysql-bin.000001就是file对应的值)。
3.3、启动从服务器复制功能
Mysql>start slave;
3.4、检查从服务器复制功能状态:
mysql> show slave status
……………………(省略部分) Slave_IO_Running: Yes //此状态必须YES Slave_SQL_Running: Yes //此状态必须YES ……………………(省略部分)
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
三、mycat配置Mysql读写分离
当MySQL按照之前的主从复制方式配置好集群以后,可以开启Mycat的读写分离机制,Mycat 1.4 支持MySQL主从复制状态绑定的读写分离机制,让读更加安全可靠,以以下的配置为例,表明一个从节点hostS1与一个主节点hostM1组成了标准的一主一从的读写分离模式:
以上是关于Mysql主从同步的主要内容,如果未能解决你的问题,请参考以下文章
web服务文件更新自动同步数据库主从复制shell脚本实现网站代码备份和mysql备份