返回顶部
首页 > 资讯 > 数据库 >MySQL新增从库
  • 201
分享到

MySQL新增从库

2024-04-02 19:04:59 201人浏览 薄情痞子
摘要

项目背景描述:    在项目的开始只有一个Mysql实例在运行,后期因为安全性,压力,备份等原因需要在此实例的基础上面新增一个从库。分析:  &n

项目背景描述:

    在项目的开始只有一个Mysql实例在运行,后期因为安全性,压力,备份等原因需要在此实例的基础上面新增一个从库。


分析:

    mysql主从是基于binlog日志来实现的,那么需要主服务器开启binlog,此选项默认是关闭。我这边服务器在部署的时候就开启了,因为使用binlog可以用来恢复Mysql数据,并且还为以后做主从做好准备,所以我们推荐大家在部署主服务器的时候就开启此选项。另外在做主从的时候还需要主库和从库的server-id唯一,server-id在做主从的时候也是相当关键的一荐参数。

    另外因为我们MySQL主库已经运行一段时间了,里面已经有相当多数据,我们需要将这些数据备份出来,然后从库再从备份的节点同步数据,这样来保持主从的数据一致性,并且在操作过程中最好不要影响我们的业务正常运行。最终决定使用xtrabackup来备份数据,因为用xtrabackup备份数据的时候不需要琐表,但只限于InnoDB引擎的数据库和XtraDB引擎的数据库,对于MyISAM引擎的数据库还是会琐表,刚好我们的数据库引擎使用的是InnoDB


操作步骤:

第一步:部署从数据库服务器,最好数据库版本一致,部署过程省略


第二步:修改配置文件

# 以下为主服务器需要修改的配置,server_id不一定为82,可以为任何一个数字,比如我们可以用本机的IP最后一位
[mysqld]
datadir=/data/mysql       #此选项一定要指定,就算有默认也需要指定
log_bin=mysql-bin
server_id=10
expire_logs_days=5        #指定binlog文件保留的天数,如果硬盘空间够大可以不指定,或者指定天数多一点

# 以下为可选项
binlog-ignore-db=mysql,infORMation_schema,performance_schema,sys    #指定忽略不同步的数据库
binlog-do-db=discuz,PHPcms                                          #指定要同步的数据库

在主服务器上面授权从服务器一个主从同步账号

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

说明:以上授权命令根据自己需求更改,比如权限,可访问数据库,用户名,授权客户端,密码等信息

# 以下为从服务器需要修改的配置
datadir=/data/mysql                      #此选项一定要指定,就算有默认也需要指定
server_id = 2

# 以下为可选项
replicate-do-db                          #指定需要同步的数据库
replicate-ignore-db                      #指定不同步的数据库
replicate-do-table                       #指定需要同步的表
replicate-ignore-table                   #指定不同步的表
replicate-wild-do-table                  #指定需要同步的表,可以使用通配符,如test.tables1%
replicate-wild-ignore-table              #指定不需要同步的表,可以使用通配符
# 优化同步延迟,根据项目设置
slave_parallel_workers = 16     #多少个线程用于主从复制
slave_parallel_type= logical_clock


第三步:安装xtrabackup工具(主从服务器都需要安装)

至以下连接下载适合自己操作系统版本和MySQL版本的xtrabackup

xtrabackup下载

下载完成后执行以下命令安装 

# 这样可以自动安装所需要依赖包
yum -y install percona-xtrabackup-24-2.4.10-1.el7.x86_64.rpm


第四步:备份数据

注意:以需要使用root用户执行,或者使用sudo权限执行

备份整个库

xtrabackup --user=root --passWord=123456 --target-dir=/root/mysql_bak -S /tmp/mysql.sock --backup

--user             指定数据库访问用户名

--password    指定数据库访问密码,如果密码有特殊字符需要使用单引号引起来

--target-dir    指定备份路径,最好写绝对路径

--backup        与--target-dir选项一起使用

-S                   指定mysql.sock文件位置

备份单个库

xtrabackup --user=root --password=123456 --databases=test1 --target-dir=/root/mysql_bak -S /tmp/mysql.sock --backup

--databases    指定需要备份的库名

备份多个库

xtrabackup --user=root --password=123456 --databases="test1 test2 test3" --target-dir=/root/mysql_bak -S /tmp/mysql.sock --backup

--databases    多库用双引号引起来,使用空格进行分隔

备份某个库的指定表

xtrabackup --user=root --password=123456 --databases="test1.tables1 test2.tables2 test3.tables3" --target-dir=/root/mysql_bak -S /tmp/mysql.sock --backup

--databases    备份表使用库名.表名的方式,如果是多个表就使用双引号引起来,不同表使用空格分隔


第五步:将备份数据复制到从服务器

scp -pr /root/mysql_bak/* root@172.16.10.11:/data/mysql_slave


第六步:将数据还原到从服务器

注意:还原之前需要停止从库数据库服务并清空从服务器数据目录,如果有需要的数据就先备份到其实地方

# 停止服务
service mysqld restart || systemctl restart mysqld
# 备份原数据
mkdir /data/mysql_bak
mv /data/mysql/* /data/mysql_bak

还原操作

xtrabackup --prepare --target-dir=/data/mysql_slave
xtrabackup --copy-back --target-dir=/data/mysql_slave


第七步:启动数据库并启用主从

# 将原备份数据复制回原目录,注意:ib_buffer_pool ibdata1 ib_logfile0 ib_logfile1四个文件不要覆盖
# 如果从库没有数据需要往回复制的话就不需要cp这步操作
cp -r /data/mysql_bak/* /data/mysql
chown -R mysql:mysql /data/mysql
service mysqld restart || systemctl restart mysqld

执行以下命令

mysql> change master to master_host='172.16.10.10',master_port=3306,master_user='slave',master_password='123qweASD',master_log_file='mysql-bin.000011',master_log_pos=154;

master_host:             master服务器的IP地址

master_port:             master服务器的端口

master_user:             master服务器授权从服务器主从同步的用户名

master_password:    master服务器授权从服务器主从同步的密码

master_log_file:        从主服务器备份出来的文件:xtrabackup_info中获取

grep "binlog_pos" xtrabackup_info | awk -F "'" '{print $2}'

master_log_pos:       从主服务器备份出来的文件:xtrabackup_info中获取

grep "binlog_pos" xtrabackup_info | awk -F "'" '{print $4}'

执行以下命令启用主从同步

mysql> start slave;

小知识:停止主从同步命令为

# 以下为扩展知识命令,如果执行后需要再执行上条命令start slave;
mysql> stop slave;


第八步:测试并检查主从状态

mysql> show slave status \G;

如果看以以下两个值为Yes说明主从同步正常

Slave_IO_Running: Yes
Slave_SQL_Running: Yes


第九步:测试

可以修改下需要同步的库,或者表的数据看上是否能正常同步去,或者在备份完的时候就去修改下数据,这时候备份里同是没有此修改记录,当启用主从同步的时候看下数据是否会同步过来

您可能感兴趣的文档:

--结束END--

本文标题: MySQL新增从库

本文链接: https://lsjlt.com/news/43540.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL新增从库
    项目背景描述:    在项目的开始只有一个MySQL实例在运行,后期因为安全性,压力,备份等原因需要在此实例的基础上面新增一个从库。分析:  &n...
    99+
    2024-04-02
  • MYSQL 主从添加新从库
    MySQL 主从复制,不停机添加新从节点 1、主库创建账号: show master status; GRANT REPLICATION SLAVE ON . to 'reader'@'%' identif...
    99+
    2024-04-02
  • MYSQL 增加从库方式介绍
    目录一、mysql主从复制实现细节二、增加一个slave一、MySQL主从复制 常见的主从架构: 一主一从:一个 Master,一个 Slave一主多从:一个 Master,多个 Slave 具体,参考下图: 实现细...
    99+
    2024-04-02
  • MYSQL 增加从库方式介绍
    目录一、MySQL主从复制实现细节二、增加一个slave一、MySQL主从复制 常见的主从架构: 一主一从:一个 Master,一个 Slave一主多从:一个 Master,多个 S...
    99+
    2024-04-02
  • mysql新增分区
    在 MySQL 中,你可以使用 ALTER TABLE 语句来新增分区。 例如,假设你有一个名为 users 的表,并希望为它新增一个名为 p1 的分区,可以使用以下语句: ALTER TABLE users ADD PARTITI...
    99+
    2023-09-25
    mysql 数据库
  • MySQL 8.0 新增特性
    1. 数据字典 新增了事务型的数据字典,用来存储数据库对象信息 之前,字典数据是存储在元数据文件和非事务型表中的 2. 账号权限管理 添加了对 “角色” 的支持,角色会对应一套权限,角色可以被添加、删除...
    99+
    2024-04-02
  • 不停止 MySQL 服务增加从库的两种方式
    现在生产环境MySQL数据库是一主一从,由于业务量访问不断增大,故再增加一台从库。前提是不能影响线上业务使用,也就是说不能重启MySQL服务,为了避免出现其他情况,选择在网站访问量低峰期时间段操作。 一般在...
    99+
    2022-05-19
    mysql
  • Mysql数据库表的自增主键重新排列
    Mysql数据库表的自增主键重新排列1,删除原有主键:ALTER TABLE `表名` DROP `id`;2,添加新主键字段:ALTER TABLE `表名` ADD `id` MEDIUMINT( 8 ...
    99+
    2024-04-02
  • mysql如何新增记录
    这篇文章将为大家详细讲解有关mysql如何新增记录,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql新增记录的方法:1、使用“INSERT INTO 表名 列名[,...
    99+
    2024-04-02
  • MySQL数据库高级数据操作之新增数据
    目录多数据插入主键冲突1、主键冲突更新2、主键冲突替换蠕虫复制多数据插入 只要写一次insert,可以插入多条数据 基本语法: insert into 表名 [(字段列表)] val...
    99+
    2024-04-02
  • python如何实现Mysql数据库批量新增数据
    本篇内容主要讲解“python如何实现Mysql数据库批量新增数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python如何实现Mysql数据库批量新增数据”吧!一、批量插入数据的场景在进行...
    99+
    2023-06-29
  • MySQL5.7主从添加新从库的方法
    本篇内容介绍了“MySQL5.7主从添加新从库的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!MySQ...
    99+
    2024-04-02
  • mysql 每日新增表分区
    1.创建表和表分区DROP TABLE zy.time_partition;CREATE TABLE zy.time_partition(TIME DATETIME NOT NULL )ENGINE...
    99+
    2024-04-02
  • mysql表怎么新增字段
    要在MySQL表中新增字段,可以使用ALTER TABLE语句。以下是一个示例: ALTER TABLE table_name AD...
    99+
    2024-04-02
  • 如何基于生产环境mysql 5.6.25主从部署新的mysql从库操作指南
    1,背景需求        由于现网的环境,经过近期监控,发现MYSQL主库的IO读写压力比较大,需要部署新的MYSQL从库,进一步分摊MYSQL主库的压力,以...
    99+
    2024-04-02
  • MySQL 自增 ID 默认从 1 开始,如何设置自增 ID 从 0 开始
        MySQL 是一种关系型数据库,它是世界上最流行的关系型数据库之一。在 MySQL 中,自增是一种非常有用的功能,它可以自动给主键赋值,并保证每个主键是唯一的。然而,许多人不知道的是,MySQL 默认情况下从 1 开始自增,这并不总...
    99+
    2023-10-22
    mysql 数据库
  • MySQL 5.7.12新增MySQL Shell命令行功能
    在最新发布的MySQL 5.7.12中有许多令人兴奋的新功能,对于MySQL开发者来说,最令人兴奋的莫不是新增的MySQL Shell了,其下载地址: ...
    99+
    2024-04-02
  • Mysql 数据库 主从数据库 (主从)(主主)
    一、什么是主从数据库 主从数据库就是把数据库架构分为主数据库和从数据库。从数据库是主数据库的备份,以提高数据的安全性,不至于一个数据库崩掉而导致整个项目也运行不起来。可以有效的防止财产的损失。一般从库只做查询操作,而主库则做更改操作,也就是...
    99+
    2023-09-28
    数据库 mysql 服务器
  • Android中增加新字库的方法
    Android系统的字库文件放在:alps\frameworks\base\data\fonts 其中DroidSans.ttf是默认英文字库;DroidSans-Bold.t...
    99+
    2022-06-06
    方法 Android
  • Thinkphp 6.0数据库的数据新增
    本节课我们要学习一下数据库的数据新增功能,从单数据、批量和 save()新增。 一.单数据新增 1. 使用 insert()方法可以向数据表添加一条数据,更多的字段采用默认; $data = [    'username' => '辉...
    99+
    2023-09-18
    数据库 java mysql Powered by 金山文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作