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状态:

show slave status\G
\G就是结束  再加一个";" 就多余了,所以才报错,这2个结束符号别重复使用就是...

主要查看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同步配置(一主一从)的更多相关文章

  1. MYSQL主从库同步配置过程

    MYSQL主从库同步配置过程 为了实现网站数据库的异地备份,采用了MySQL数据库主从同步配置,需要两台服务器分别作为主从库,当主库发生增删改等操作,会实时反映到从库,我的个人服务器配置如下: 主库为 ...

  2. Linux(Ubuntu)下MySQL的安装与配置

    转自:http://www.2cto.com/database/201401/273423.html 在Linux下MySQL的安装,我一直觉得挺麻烦的,因为之前安装时就是由于复杂的配置导致有点晕.今 ...

  3. Centos下MySQL主从同步配置

    说明:由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样, 因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低,Master的版本肯定不能高于Slave ...

  4. Linux CentOS下MySQL的安装配置之浅谈

    前期必备安装:VMware虚拟机,CentOS镜像[注意:Linux下使用CentOS   MySQL是不用在官网下载的,只需要配置就OK了] 下面开始正式操作: //CentOS安装MySQL之浅谈 ...

  5. Linux环境下mysql主从同步环境搭建

    #my.cnf添加内容vim /etc/my.cnf添加以内容: ## replicationserver_id=195binlog-ignore-db=mysqlbinlog_format=mixe ...

  6. windows下 MySQL数据库双向同步 配置步骤

          最近在项目中遇到了要实现服务器上MySql数据双向同步,在网上找了很多资料,但是大部分都是在liux系统下配置的, 而且都是互相转载,没有一个详细的步骤,于是决定写一个windows系统下 ...

  7. Linux虚拟机下mysql 5.7安装配置方法图文教程

    一. 下载mysql5.7 http://mirrors.sohu.com/mysql/MySQL-5.7/ Linux下载: 输入命令:wget http://mirrors.sohu.com/my ...

  8. Linux(centos)下mysql编译安装教程

    Linux下mysql编译安装教程 #查看linux发行版本 cat /etc/issue #查看linux内核版本号 uname -r 本文測试环境centOS6.6 一.Linux下编译安装MyS ...

  9. linux(CentOS) 下mysql自动备份

    1.创建并编辑文件 /usr/sbin/bakmysql.sh,命令: vi /usr/sbin/bakmysql.sh 内容如下: db_user="root" db_passw ...

随机推荐

  1. JDBC批处理方法

    每次新建Connection的时候相当于建了一座桥,每次一辆车(PreparedStatement)运送货物(ResultSet)成本太高! 每次都建立网络连接的时间远远大于本地的时间,为了处理大量的 ...

  2. SpringBoot学习(四)——配置文件占位符

    RandomValuePropertySource:配置文件中可以使用随机数 ${Random.value}  ${random.int}, ${random.long}, ${random.int( ...

  3. Maven:Failed to read artifact descriptor for xxx

    Maven多模块项目jar包引用问题: Failed to execute goal on project xxx-service: Could not resolve dependencies fo ...

  4. 9.1hadoop 内置计数器、自定义枚举计数器、Streaming计数器

    1.1  计数器 计数器的作用是用来统计数量的,用于记录特定事件的次数,分为内置计数器.自定义java枚举计数器.自定义Stream计数器三大类.用于质量分析,或应用级统计.分析计数器的值比分析一堆日 ...

  5. HTML超链接实例介绍

    <html><head><title>第六节课</title><meta charset="UTF-8"></he ...

  6. import torch 报错

    1.进入官网   https://pytorch.org/ 2.复制command到anaconda环境,即可

  7. pycharm实用技巧

    https://mp.weixin.qq.com/s/-48vU9KtnInFaYJ6rQ9n-w

  8. android 根据距离区分 点击跟滑动事件

    public void onClick(View v) { if (isclick) Log.i(TAG, "onclick"); } }); } float distance = ...

  9. git高级用法之cheery-pick

    前言 想象一种情况,你在分支上开发多个功能,现在要将第一个功能推到另一个分支上 master 1_2 | dev \__3_4_5 例如上面的,先基于master创建了分支dev, 然后提交了3个co ...

  10. 运营商何时会取消40G或100G流量封顶呢?短期内有望实现吗?

    一直以来,运营商的不限流量套餐就饱受人们的诟病.因为说是不限流量,但其实运营商故意设置了"封顶"!最常见的封顶限制,就是流量超过40G网速会降速到1Mbps--实际下载速度为128 ...