MySQL运维实战(7)建立复制

引言

在构建数据库复制系统时,正确配置主库和备库是确保数据同步顺利进行的关键步骤。以下是建立复制的基本步骤,主要包括主库开启binlog的关键参数设置,创建主库复制账号以满足基本权限需求,备库参数配置和初始化的步骤。

1、主库开启binlog

主库需要配置的关键参数
server_id:主备库需要设置为不同。
log_bin:binlog文件的前缀,可以指定绝对路径,也可以只指定文件名。若不指定路径,binlog默认存放在datadir指定的路径下。
binlog_format:可设置为STATEMENT、MIXED、ROW这几种模式。一般建议使用ROW模式。

server_id=100
log_bin=/data/mysql5.6/binlog/binlog
binlog_format=ROW# log_slave_updates=ON

上述参数中,log_bin不能动态修改。需要重启mysql才能生效。
使用show global variables确认主库binlog已经开启:

mysql> show global variables like 'log_bin%';
| log_bin                                 | ON                                 |
| log_bin_basename                        | /data/mysql5.6/binlog/binlog       |
| log_bin_index                           | /data/mysql5.6/binlog/binlog.index |

使用show binary logs命令查看主库binlog列表:

mysql> show binary logs;
+---------------+-----------+
| Log_name      | File_size |
+---------------+-----------+
| binlog.000001 |       120 |
+---------------+-----------+
1 row in set (0.00 sec)

2、主库创建复制账号(满足基本权限要求)

主库需要创建一个复制账号,备库需要使用复制账号连接到主库,获取binlog。

mysql> create user 'rep'@'%' identified by 'rep123';
Query OK, 0 rows affected (0.00 sec)mysql> grant  replication slave on *.* to 'rep'@'%';
Query OK, 0 rows affected (0.00 sec)

复制账号需要的权限:replication slave。

3、备库参数配置

备库上必须设置的参数server_id,server_id的值需要和主库设置成不一样。

server_id=236

其他binlog参数可以不设置,或者和主库设置成一样。
备库开启binlog和log_slave_updates后,会将从主库上复制过来的事务也记录到binlog,在创建级连复制时,需要这么配置。

log_slave_updates=ON
log_bin=/data/mysql5.6/binlog/binlog
binlog_format=ROW

4、备库初始化

备库数据准备,需要满足条件:

  • 备库数据是主库数据在过去某个时间点的快照
  • 从那个时间点开始的binlog都存在

我们可以使用备份(如percona开源的xtrabackup,或mysqldump)等工具创建主库的一致性备份,将恢复到备库中,然后再开启复制。

如果主备库都是新初始化的数据库实例,主库binlog没有缺失,则可以略过数据库备份和恢复这一个步骤,直接开启复制。

mysqldump备份数据

这里使用mysqldump进行备份:

/opt/mysql5.7/bin/mysqldump -uroot -h127.0.0.1 -P3357 -pabc123 --all-databases \--master-data=2 --routines --flush-privileges --triggers --events > /tmp/mysql57_dump.sql

mysqldump参数说明:

  • all-databases --routines --triggers --events:备份所有数据库,包括存储过程、触发器、定时事件
  • master-data=2:记录数据库当前binlog位点。指定master-data后,后自动加上lock-tables选项,锁定数据库,除非同时加上–single-transaction。
  • single-transaction:使用innodb的一致性读取机制实现一执行数据库备份,不锁表。但是对非InnoDB引擎(如MyISAM)无效。同时备份过程中不能有DDL。
  • flush-privileges:备份完mysql数据库后,加上flush privileges命令。数据恢复时,恢复完mysql数据库后就会执行flush privileges命令,恢复出来的用户信息才会生效。
  • gtid-mode=auto:如果数据库开启了GTID,则备份文件中会加入set global GTID_PURGED=xxx;

mysqldump数据恢复

到目标实例执行:

mysql -uroot -h127.0.0.1 -P3357 -pabc123 
source mysql57_dump.sql

注意,执行source前,确认登陆了正确的数据库。如果登陆到主库执行恢复操作,则会引起主库数据丢失。

5、备库创建复制通道

在备库上使用change master命令建立复制信息,这里指定从主库binlog.000001文件头部开始复制(master_log_pos没有指定时,从binlog文件头部复制)。

change master to master_host='172.16.121.234',master_port=3356,master_user='rep',
master_password='rep123',master_log_file='binlog.000001';start slave;show slave status\G

位点从备份文件中找:

# head -30 /tmp/mysql57_dump.sql | grep 'CHANGE MASTER'
-- CHANGE MASTER TO MASTER_LOG_FILE='binlog.000006', MASTER_LOG_POS=608;

更多技术信息请查看云掣官网https://yunche.pro/?t=yrgw

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/694326.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git push 使用 --mirror 参数复制仓库

迁移一个 Git 仓库并且保留原有的提交记录和分支 克隆原始仓库到本地 git clone <原始仓库URL> <新仓库目录>添加新的远程仓库&#xff1a;git remote add new-origin <新仓库URL>推送所有分支和标签到新的远程仓库&#xff1a;git push new-origin --mirro…

深度学习基础——SSD目标检测

SSD网络介绍 使用多个特征图作为特征预测层。 SSD (Single Shot MultiBox Detector)于2016年提出。当网络输入为300300大小时&#xff0c;在VOC2007测试集上达到74.3%的mAP;当输入是512512大小时&#xff0c;达到了76.9%的mAP SSD_Backbone部分介绍 不变的部分 特征提取网…

Mysql表字符集更换

Mysql表字符集更换 字符集 1.系统默认设置字符集为 utf8mb4,校验规则为 utf8mb4_bin&#xff0c;但可根据应用需要在申请时选 择其他字符集。 2.绝大多数数据库产品 UTF8 字符集存储汉字占用 3 个字节(部分特殊汉字占用 4 个字节),存 储英文字符占用 1 个字节。而 MYSQL 默认…

ubuntu 22.04 图文安装

ubuntu 22.04.3 live server图文安装 一、在Vmware里安装ubuntu 22.04.3 live server操作系统 选择第一个选项开始安装 选择English语言 选择中间选项不更新安装&#xff0c;这是因为后续通过更换源之后再更新会比较快 键盘设计继续选择英文&#xff0c;可以通过语言选择…

如何实现两个电脑之间通过以太网(网线)实现文件互传

如何实现两个电脑之间通过以太网&#xff08;网线&#xff09;实现文件互传 本帖目的&#xff1a;介绍如何通过以太网&#xff08;网线&#xff09;连接两台电脑&#xff0c;通过文件夹共享的方式&#xff0c;实现两台电脑之间的文件互传。 本帖以笔者实际工作上遇到的场景为例…

Python Paramiko模块-SSH远程连接服务器操作

前言 Paramiko 是 Python 语言的一个 SSH 客户端。可以远程连接Linux服务器&#xff0c;通过 python 对 Linux 进行操作&#xff0c;可以实现进行对远程服务器进行下载和上传文件操作。 简介 Paramiko的特点&#xff1a; 支持SSHv2协议和SFTP协议支持密码和密钥认证提供高级…

c编译器学习03:chibicc的win10 vs 编译、调试环境设置

虚拟机 用VMware Workstation 17 Player&#xff0c;安装centos7&#xff0c;安装gcc等开发工具 设置虚拟机的共享文件夹&#xff0c;将win10下下载的chibicc拷贝到/home/a下 直接make编译 用ip addr查询得到虚拟机的ip地址&#xff0c;后面vs远程开放时使用。 vs设置 vs毕…

2.20号qt

1.Qt中的信息调试类 &#xff08;输出类&#xff09; QDebug //1.类似与printf qDebug("%s","hello kittiy"); //2. 类似与cout 默认有换行 比较常用的方式 qDebug() << "你好" ; //1.类似与printf qDebug("%s",&q…

redis最佳实践

原则&#xff1a;redis希望存储的是热点数据&#xff0c;尽量可以在一天内访问到。 最佳实践 选择合适的数据结构 redis有String、Hash、Set、SortedSet、List等结构&#xff0c;主要依据业务需要进行选择 string:几乎所有数据都可以用string存储&#xff0c;但是最好适用于…

JS基础之函数

js基础之函数 目录 js基础之函数什么是函数&#xff1f;函数的语法无参函数有参函数&#xff1a;函数表达式函数的返回值returnarguments 什么是函数&#xff1f; 函数的作用就是将一段代码块封装打包到一起&#xff0c;方便后期重复使用 函数的语法 function 函数名(参数1,…

使用elasticsearch 8.4.3 的管道解析日志(kibana操作)

使用elasticsearch的管道解析日志&#xff08;kibana操作&#xff09; 一. 什么是 pipeline二. 案例 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 以下是一个简单的文档解析案例…

Project_Euler-15 题解

Project_Euler-15 题解 题目 思路 一眼背包问题&#xff0c;再看一眼广度优先搜索&#xff0c;再看一眼排列组合&#xff0c;这里讲一讲排列组合的解法吧&#xff1a; 以 2 ∗ 2 2*2 2∗2的组合为例可以发现&#xff1a; 无论哪一种方法&#xff0c;从左上角到右下角总共需要…

【LeetCode】递归精选8题——基础递归、链表递归

目录 基础递归问题&#xff1a; 1. 斐波那契数&#xff08;简单&#xff09; 1.1 递归求解 1.2 迭代求解 2. 爬楼梯&#xff08;简单&#xff09; 2.1 递归求解 2.2 迭代求解 3. 汉诺塔问题&#xff08;简单&#xff09; 3.1 递归求解 4. Pow(x, n)&#xff08;中等&…

论文精读--Noisy Student

一个 EfficientNet 模型首先作为教师模型在标记图像上进行训练&#xff0c;为 300M 未标记图像生成伪标签。然后将相同或更大的 EfficientNet 作为学生模型并结合标记图像和伪标签图像进行训练。学生网络训练完成后变为教师再次训练下一个学生网络&#xff0c;并迭代重复此过程…

强化学习入门(Matlab2021b)-定义奖励和观察【1】

目录 1 前言2 Continuous Rewards 连续奖励3 Discrete Rewards 离散奖励4 Mixed Rewards 混合奖励5 Observation Signals 观测信号参考链接1 前言 为了指导学习过程,强化学习使用从环境生成的标量奖励信号。该信号衡量agent相对于任务目标的性能。换句话说,对于给定的观察(…

来看看投资界最关心的 Sora 几大问题

作者&#xff1a;苍何&#xff0c;前大厂高级 Java 工程师&#xff0c;阿里云专家博主&#xff0c;CSDN 2023 年 实力新星&#xff0c;土木转码&#xff0c;现任部门技术 leader&#xff0c;专注于互联网技术分享&#xff0c;职场经验分享。 &#x1f525;热门文章推荐&#xf…

如何查看 CPU 占用高的进程

1、使用 top 命令&#xff0c;查看 cpu 占用超过 100% 2、查看哪个进程占用 cpu 最高&#xff08;该案例使用阿里的 arthas 来查看&#xff09; 2.1 下载&#xff1a;curl -O https://arthas.aliyun.com/arthas-boot.jar 2.2 启动命令&#xff1a;java -jar arthas-boot.jar …

OpenAI 发布文生视频模型 Sora,普通人应该怎么做才能利益最大化?

原文链接&#xff1a; OpenAI 发布文生视频模型 Sora&#xff0c;普通人应该怎么做才能利益最大化&#xff1f; 自从 2022 年 11 月 30 日 ChatGPT 发布之后&#xff0c;每次 OpenAI 再发布新功能都跟过年一样&#xff0c;那叫一个热闹。 包括 GPT 4.0&#xff0c;GPT Store&…

深入浅出JVM(一)之Hotspot虚拟机中的对象

本篇文章思维导图 对象的创建 对象的创建可以分为五个步骤:检查类加载,分配内存,初始化零值,设置对象头,执行实例构造器 类加载检查 HotSpot虚拟机遇到一条new指令,会先检查能否在常量池中定位到这个类的符号引用,检查这个类是否类加载过 没有类加载过就去类加载类加载过就进…

LeetCode15.三数之和

题目 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 …