基础环境:

  主库 从库
服务器IP地址 192.168.10.11 192.168.10.12
版本 5.7.24 5.7.24
已存在的数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| lijiamandb |
| mysql |
| performance_schema |
| sys |
| testdb |
+--------------------+
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+

(一)主数据库复制相关参数配置(主)

如果要使用复制功能,则必须开启二进制日志,如果要开启二进制日志,需要设置server-id参数,启动二进制日志需要重启数据库实例。最少的参数配置如下:

[mysqld]
log-bin=mysql-bin
server-id=

但在实际使用中,还需配置其它参数,用于优化配置:

  • 如果未设置 server_id(或将其显式设置为其默认值0),则主服务器将拒绝从属服务器的任何连接;
  • 为了在InnoDB事务复制设置中获得最大的持久性和一致性,应在my.cnf文件中使用innodb_flush_log_at_trx_commit=1和sync_binlog=1;
  • 确保未在复制主机上启用系统变量skip_networking。如果已禁用网络连接,则从服务器将无法与主服务器通信,复制将失败。

因此,我的my.cnf配置如下:

[mysqld]
# 复制相关参数配置
server_id =
binlog_format=ROW
log_bin=/mysql/binlog/master-bin
sync_binlog=
expire_logs_days=
max_binlog_size=1G
sync_binlog=
innodb_flush_log_at_trx_commit=

(二)创建用于复制的用户(主)

每个从服务器都需要使用MySQL的用户和密码连接到主服务器上,因此需要在主服务器上创建MySQL的用户,用于进行复制操作。可以为每个从库单独创建一个账号,也可以使用同一个账号。账号需具有“replication slave”权限。

mysql> grant replication slave on *.* to 'rep'@'%' identified by '';

(三)初始化从库数据(从)

初始化的方法有很多,可以使用mysqldump,也可以使用xtrabackup,其他方法见https://dev.mysql.com/doc/refman/5.7/en/replication-snapshot-method.html。这里以最常用的mysqldump进行操作。

(3.1)首先对主库进行备份

[root@slavedb ~]# mysqldump -uroot -p123456 -h 192.168.10.11 --single-transaction --all-databases --master-data=  > master.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure. [root@slavedb ~]# ls -l
total
-rw-r--r-- root root Feb : master.sql

注意:--master-data=2不可缺少,该参数会将备份到的位置以注释的形式保存在备份集文件中。

(3.2)在备库上还原

[root@slavedb ~]# mysql -uroot -p123456 < master.sql
mysql: [Warning] Using a password on the command line interface can be insecure.

(3.3)确认备库还原到的位置

[root@slavedb ~]# cat master.sql |grep "CHANGE MASTER"|less

-- CHANGE MASTER TO MASTER_LOG_FILE='master-bin.000021', MASTER_LOG_POS=;

(四)从数据库复制相关参数配置(从)

如果尚未设置从服务器ID,或者当前值与您为主服务器选择的值冲突,请关闭从服务器并编辑[mysqld]配置文件的 部分以指定唯一的服务器ID。例如:

[mysqld]
server_id =

注意:不必在从属服务器上启用二进制日志记录即可设置复制。但是,如果在从属服务器上启用二进制日志记录,则可以使用从属服务器的二进制日志进行数据备份和崩溃恢复,也可以将从属服务器用作更复杂的复制拓扑的一部分(级联)。

(五)将从数据库添加到复制环境(从)

在从服务器设置主服务器配置信息:

mysql> change master to
-> master_host='192.168.10.11',
-> master_port=,
-> master_user='rep',
-> master_password='',
-> master_log_file='master-bin.000021',
-> master_log_pos=;

启动从库复制相关进程:

mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

(六)确认复制状态

在从库执行“ show slave status ”,如果Slave_IO_Running和Slave_SQL_Running都是“YES”,说明复制正常。

mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.10.11
Master_User: rep
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master-bin.000022
Read_Master_Log_Pos: 1192320
Relay_Log_File: slavedb-relay-bin.000005
Relay_Log_Pos: 1192535
Relay_Master_Log_File: master-bin.000022
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 1192320
Relay_Log_Space: 1192911
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: caa64a22-481a-11ea-b0f1-000c29fb6200
Master_Info_File: /mysql/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)

【完】

附录:

MySQL复制(replication)文档集合:

1.复制概述
2.基于二进制日志文件位置(binlog)配置复制
3.基于全局事物标识符(GTID)配置复制
4.多源复制
5.级联复制
6.半同步复制
7.延迟复制
8.复制过滤规则
9.对复制进行故障排除
10.故障切换
11.复制管理

MySQL复制(二)--基于二进制日志文件(binlog)配置复制的更多相关文章

  1. MySQL二进制日志文件Binlog的三种格式以及对应的主从复制中三种技术

    二进制日志文件Binlog的格式主要有三种: 1.Statement:基于SQL语句级别的Binlog,每条修改数据的SQL都会保存到Binlog里面. 2.ROW:基于行级别,每一行数据的变化都会记 ...

  2. MySQL基于二进制日志的主从复制

    一.什么是MySQL的主从复制? MySQL可以将一个数据库设置为主库,另一个数据库设置为该主库的从库,当主库发生了变更,会同步到从库中.MySQL的主从架构,可以是星型的,也可以是线型的. 星型架构 ...

  3. mysql中如何开启binlog?开启二进制日志文件?binary log?

    需求描述: 开启mysql的binlog即binary log日志功能,在此记录下. 版本描述: mysql版本:5.7.21-log 操作过程: 1.修改my.cnf并且将以下参数加入其中,重启my ...

  4. MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结

    MySQL中有六种日志文件,分别是:重做日志(redo log).回滚日志(undo log).二进制日志(binlog).错误日志(errorlog).慢查询日志(slow query log).一 ...

  5. mysql删除二进制日志文件

    一.RESET MASTER 这个语句可以验证首次配置主机备机是否成功.步骤如下: 1. 启动master和 slave,开启replication (即 复制) 注:replication (复制) ...

  6. 实战:mysql检查物理磁盘中的二进制日志文件是否有丢失

    版权声明:日常札记,乐于分享 https://blog.csdn.net/yangzhawen/article/details/32103555 场景:有时候由于磁盘损坏或人为原因错误删除了磁盘中的二 ...

  7. mysql二进制日志文件出错导致mysql服务无法启动

    今天打开phpmyadmin发现连不上mysql数据库,重新启动mysql启动不起来,查看日志发现例如以下错误 <span style="font-family:SimSun;font ...

  8. Mysql-8 配置主从复制(基于二进制日志)

    目录 1. 实验环境 2. 安装MySQL8 3. 配置主从复制 4. 配置复制用户 5. 数据的同步 6. 配置从节点 7. 测试主从复制 1. 实验环境 System IP Host CentOS ...

  9. mysql数据安全之利用二进制日志mysqlbinlog备份数据

    mysql数据安全之利用二进制日志mysqlbinlog备份数据 简介:如何利用二进制日志来备份数据 什么是二进制日志: 二进制日志就是记录着mysql数据库中的一些写入性操作,比如一些增删改,但是, ...

随机推荐

  1. DjangoCBV源码分析

    目录 FBV CBV CBV基本写法 CBV源码分析 settings源码分析 FBV FBV是基于函数的视图 CBV CBV是基于类的视图 CBV基本写法 ​ 朝login提交get请求会自动执行M ...

  2. virtualenv虚拟环境使用及介绍

    一.为什么使用virtualenv虚拟环境 每个虚拟环境下的依赖相互独立,不同的项目可以单独使用一套python环境,减少各依赖包的影响 更容易部署 容器化 二.virtualenv创建虚拟环境 三. ...

  3. 2020年Java程序员应该学习的10大技术

    对于Java开发人员来说,最近几年的时间中,Java生态诞生了很多东西.每6个月更新一次Java版本,以及发布很多流行的框架,如Spring 5.Spring Security 5和Spring Bo ...

  4. UGUI源码之Graphic

    Graphic是用来显示图像的一个抽象类,是MaskableGraphic的父类,而MaskableGraphic是Image.RawImage.Text的父类. Graphic继承于UIBehavi ...

  5. AWS、阿里云、Azure、Google Cloud、华为云、腾讯云 各种云服务器价格收费对比(上)

    他来了,他来了~ 他带着六家公有云厂商的资源价格走来了~ 不久前,我们上线了一款小工具——[多云成本计算器]1.0版,公众号菜单栏可以直接体验.详细介绍可以戳这里<3秒即得最低价,速石上线「多云 ...

  6. 除了闹过腥风血雨的fastjson,你还知道哪些Java解析JSON的利器?

    昨天下午 5 点 10 分左右,我解决掉了最后一个 bug,轻舒一口气,准备关机下班.可这个时候,老板朝我走来,脸上挂着神秘的微笑,我就知道他不怀好意.果不其然,他扔给了我一个新的需求,要我在 Jav ...

  7. map set vector用法小总结

    1.Map 定义 #include<map> map<string,bool> mp; 插入 mp[s]=; mp.insert(make_pair(s,)); 输出 cout ...

  8. 如何编写Robot Framework测试用例2---(测试用例语法1)

    基本语法 测试用例由关键字组成,关键字的来源有三种: 1从测试库引入:2从资源文件引入:3从关键字表中引入(自定义关键字) 下面就是一个典型的测试用例组织形式. 图中有2个测试用例“Valid Log ...

  9. Kaggle竞赛丨入门手写数字识别之KNN、CNN、降维

    引言 这段时间来,看了西瓜书.蓝皮书,各种机器学习算法都有所了解,但在实践方面却缺乏相应的锻炼.于是我决定通过Kaggle这个平台来提升一下自己的应用能力,培养自己的数据分析能力. 我个人的计划是先从 ...

  10. 2.Scanner的进阶使用

    package com.duan.scanner; import java.util.Scanner; public class Demo04 { public static void main(St ...