Linux Centos下MySQL主从Replication同步配置(一主一从)
MySQL 主从复制概念MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。

说明:由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样,因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低,Master的版本肯定不能高于Slave版本。(版本向下兼容)
实现MySQL主从复制需要进行的配置:
注意打开2边服务器防火墙3306端口,互相设置ip白名单
主服务器:
开启二进制日志
配置唯一的server-id
获得master二进制日志文件名及位置
创建一个用于slave和master通信的用户账号
从服务器:
配置唯一的server-id
使用master分配的用户账号读取master二进制日志
启用slave服务
一、环境:假设都是新建一个数据库db1
主机: master操作系统:centos6.8 64位
IP:192.168.119.1
MySQL版本:5.6
从机: slave操作系统:centos 7.5 64位
IP:192.168.119.2
MySQL版本:5.6
二、主服务器master修改:
1.修改mysql配置
找到主数据库的配置文件my.cnf(或者my.ini),插入如下:
[mysqld]
server-id=1 #设置server-id
log-bin=mysql-bin #开启二进制日志
log-slave-updates=1
binlog-do-db=db1 #需要同步的数据库,如果没有本行表示同步所有的数据库
binlog-ignore-db=mysql #被忽略的数据

2.登录master机的mysql:mysql –u root –p
在master机上为slave机添加一同步帐号
grant replication slave on *.* to 'name'@'192.168.119.2' identified by '123456';
flush privileges;
3.重启master机的mysql服务:service mysqld restart

4.用show master status 命令看日志情况
show master status;

通过该命令获得File和Position,在slave中有用 。注:基准这里的“mysql-bin.000017”和“3580”,在下面 “三.3设置Slave复制”的配置中会用到
三、从服务器Slave修改:
(1)修改slave机器中mysql配置文件my.cnf,该文件在/etc目录下

同样在[mysqld]字段下添加如下内容
server-id=2
log-bin= mysql-bin
relay-log= mysql-relay-bin
read-only=1
log-slave-updates=1
replicate-do-db=db1#要同步的数据库,不写本行表示同步所有数据库
然后重启slave机的mysql:service mysqld restart

(2)在slave机上验证对主机连接
mysql -h192.168.119.2 -urepl -p123456
show grants for repl@192.168.119.1;
(3)设置Slave复制,重启mysql,打开mysql会话,执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置):
CHANGE MASTER TO
MASTER_HOST='主库ip',
MASTER_USER='repl',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=245,
MASTER_CONNECT_RETRY=10;

4启动slave同步进程:
mysql>start slave;
5.查看slave状态:

主要查看Slave_IO_Running和Slave_SQL_Running 两列是否都为YES
四、测试主从服务器是否能同步
在主服务器上面新建一个表,必须在设置的数据下
五、MySQL 主从复制配置完整步骤如下(1如果新建库灰色背景滤过,2参见六、主库已经有很长时间,做从库需要全部步骤)
① 准备两台数据库环境或单台多实例环境,确定能正常启动和登录。
② 配置 my.cnf 文件:主库配置 log-bin 和 server-id 参数;从库配置 server-id,该值不能和主库及其他从库一样,一般不开启从库 log-bin 功能。注意配置后需要重启服务使之生效。
③ 登录主库,增加从库连接主库同步的账户,例如:rep,并授权 replication slave 同步的权限。
④ 登录主库,整库锁表 flush table with read lock(窗口关闭后即失效,超时参数设置的时间到了也失效);然后 show master status 查看 binlog 的位置状态。
⑤ 新开窗口,Linux 命令行备份或导出原有的数据库数据,并拷贝到从库所在的服务器目录。如果数据量很大,并且允许停机,可停机打包,而不用 mysqldump 。
⑥ 解锁主库,unlock tables;
⑦ 把主库导出的原有数据恢复到从库。
⑧ 根据主库的 show master status 查看 binlog 的位置状态,在从库执行 change master to ... 语句验证 rep 用户。
⑨ 从库开启同步开关,start slave。
⑩ 从库 show slave status\G,检查同步状态,并在主库进行更新测试。
六:重新做主从,完全同步
该方法适用于主从库数据相差较大,或者要求数据完全统一的情况
解决步骤如下:
1.先进入主库,进行锁表,防止数据写入
使用命令:
mysql> flush tables with read lock;
注意:该处是锁定为只读状态,语句不区分大小写
2.进行数据备份
#把数据备份到mysql.bak.sql文件
[root@server01 mysql]#mysqldump -uroot -p -hlocalhost 数据库名> mysql.bak.sql
这里注意一点:数据库备份一定要定期进行,可以用shell脚本或者python脚本,都比较方便,确保数据万无一失
3.查看master 状态
mysql> show master status;
+-------------------+----------+--------------+-------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+-------------------------------+
| mysqld-bin.000001 | 3260 | | mysql,test,information_schema |
+-------------------+----------+--------------+-------------------------------+
1 row in set (0.00 sec)
4.把mysql备份文件传到从库机器,进行数据恢复
#使用scp命令
[root@server01 mysql]# scp mysql.bak.sql root@192.168.128.101:/tmp/
5.停止从库的状态
mysql> stop slave;
6.然后到从库执行mysql命令,导入数据备份
mysql> source /tmp/mysql.bak.sql
7.设置从库同步,注意该处的同步点,就是主库show master status信息里的| File| Position两项
change master to master_host = '192.168.128.100', master_user = 'rsync', master_port=3306, master_password='', master_log_file = 'mysqld-bin.000001', master_log_pos=3260;
8.重新开启从同步
mysql> stop slave;
9.查看同步状态
mysql> show slave status\G 查看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
10.主库解锁
mysql> unlock tables;
Linux Centos下MySQL主从Replication同步配置(一主一从)的更多相关文章
- MYSQL主从库同步配置过程
MYSQL主从库同步配置过程 为了实现网站数据库的异地备份,采用了MySQL数据库主从同步配置,需要两台服务器分别作为主从库,当主库发生增删改等操作,会实时反映到从库,我的个人服务器配置如下: 主库为 ...
- Linux(Ubuntu)下MySQL的安装与配置
转自:http://www.2cto.com/database/201401/273423.html 在Linux下MySQL的安装,我一直觉得挺麻烦的,因为之前安装时就是由于复杂的配置导致有点晕.今 ...
- Centos下MySQL主从同步配置
说明:由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样, 因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低,Master的版本肯定不能高于Slave ...
- Linux CentOS下MySQL的安装配置之浅谈
前期必备安装:VMware虚拟机,CentOS镜像[注意:Linux下使用CentOS MySQL是不用在官网下载的,只需要配置就OK了] 下面开始正式操作: //CentOS安装MySQL之浅谈 ...
- Linux环境下mysql主从同步环境搭建
#my.cnf添加内容vim /etc/my.cnf添加以内容: ## replicationserver_id=195binlog-ignore-db=mysqlbinlog_format=mixe ...
- windows下 MySQL数据库双向同步 配置步骤
最近在项目中遇到了要实现服务器上MySql数据双向同步,在网上找了很多资料,但是大部分都是在liux系统下配置的, 而且都是互相转载,没有一个详细的步骤,于是决定写一个windows系统下 ...
- Linux虚拟机下mysql 5.7安装配置方法图文教程
一. 下载mysql5.7 http://mirrors.sohu.com/mysql/MySQL-5.7/ Linux下载: 输入命令:wget http://mirrors.sohu.com/my ...
- Linux(centos)下mysql编译安装教程
Linux下mysql编译安装教程 #查看linux发行版本 cat /etc/issue #查看linux内核版本号 uname -r 本文測试环境centOS6.6 一.Linux下编译安装MyS ...
- linux(CentOS) 下mysql自动备份
1.创建并编辑文件 /usr/sbin/bakmysql.sh,命令: vi /usr/sbin/bakmysql.sh 内容如下: db_user="root" db_passw ...
随机推荐
- JDBC批处理方法
每次新建Connection的时候相当于建了一座桥,每次一辆车(PreparedStatement)运送货物(ResultSet)成本太高! 每次都建立网络连接的时间远远大于本地的时间,为了处理大量的 ...
- SpringBoot学习(四)——配置文件占位符
RandomValuePropertySource:配置文件中可以使用随机数 ${Random.value} ${random.int}, ${random.long}, ${random.int( ...
- Maven:Failed to read artifact descriptor for xxx
Maven多模块项目jar包引用问题: Failed to execute goal on project xxx-service: Could not resolve dependencies fo ...
- 9.1hadoop 内置计数器、自定义枚举计数器、Streaming计数器
1.1 计数器 计数器的作用是用来统计数量的,用于记录特定事件的次数,分为内置计数器.自定义java枚举计数器.自定义Stream计数器三大类.用于质量分析,或应用级统计.分析计数器的值比分析一堆日 ...
- HTML超链接实例介绍
<html><head><title>第六节课</title><meta charset="UTF-8"></he ...
- import torch 报错
1.进入官网 https://pytorch.org/ 2.复制command到anaconda环境,即可
- pycharm实用技巧
https://mp.weixin.qq.com/s/-48vU9KtnInFaYJ6rQ9n-w
- android 根据距离区分 点击跟滑动事件
public void onClick(View v) { if (isclick) Log.i(TAG, "onclick"); } }); } float distance = ...
- git高级用法之cheery-pick
前言 想象一种情况,你在分支上开发多个功能,现在要将第一个功能推到另一个分支上 master 1_2 | dev \__3_4_5 例如上面的,先基于master创建了分支dev, 然后提交了3个co ...
- 运营商何时会取消40G或100G流量封顶呢?短期内有望实现吗?
一直以来,运营商的不限流量套餐就饱受人们的诟病.因为说是不限流量,但其实运营商故意设置了"封顶"!最常见的封顶限制,就是流量超过40G网速会降速到1Mbps--实际下载速度为128 ...