首页 > 数据库 >MySQL运维2-主从复制

MySQL运维2-主从复制

时间:2023-09-27 18:33:08浏览次数:39  
标签:主库 主从复制 运维 xxx master mysql MySQL

一、主从复制概念

  主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从服务器中,然后在从服务器上对这些日志重新执行也叫重做,从而使得从数据库和主库的数据保持同步。

  MySQL支持一台主库同时向多台从库进行赋值,从库同时也可以作为其他从服务器的主库,实现链式复制。

  一般主服务器我们叫Master, 从服务器叫Slave

  

二、主从复制优点

  1. 主库出现问题,可以快速切换到从库提供服务。
  2. 实现读写分离,降低主库的访问压力。
  3. 可以在从库备份,以避免备份期间影响主库服务。

三、主从复制原理

  1. Master 主库在事务提交时,会把数据变更记录在二进制日志文件binlog中。
  2. 从库读取主库的二进制文件binlog,写入到从库的中继日志relay.log
  3. slave重做中继日志中的事件,将改变从库自己的数据

  

四、主从复制搭建

  4.1 MySQL服务器准备

    首先准备两台已经安装了MySQL的主机,这里我分为准备了两台10.0.3.93(Master) 和 10.0.3.94(Slave)

  4.2 主服务器配置

    1、在MySQL的配置文件中,增加如下两行的配置,第三和第四的配置,可以根据需要配置

#MySQL服务ID,保证整个集群中唯一,默认是1
server-id=1
#是否只读,1代表只读,0代表读写
read-only=0
#忽略的数据,指不需要同步的数据库,和下面的一条配置默认如果不配置的话,即复制所有数据库
#binlog-ignore-db=mysql
#指定同步的数据库
#binlog-do-db=db01

    2、配置好了之后,要重启MySQL服务。

    3、登录mysql,创建远程连接的账号,并授予主从复制权限,这个账号是用来在从服务器上登录主服务用的。

# 创建一个mysql用户为houlei,并设置密码为:Se7eN521,该用户可以在任意主机连接该MySQL服务
mysql> create user 'houlei'@'%' identified with mysql_native_password by 'Se7eN521'; Query OK, 0 rows affected (0.03 sec) # 为'houlei'@'%' 用户分配主从复制权限 mysql> grant replication slave on *.* to 'houlei'@'%'; Query OK, 0 rows affected (0.01 sec)

    4、通过指令,查看二进制日志坐标,这里的数据也是需要在从服务上配置需要的

mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000005 |      156 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

  4.3 从服务器配置

    1、从服务器上在MySQL的配置文件中增加下面的配置

#MySQL服务ID,保证整个集群中唯一
server-id=2
#是否只读 1代表只读 0代表读写
read-only=1

    2、配置好了之后,要重启MySQL服务。

    3、登录mysql,设置主库配置

      mysql-8.0.23以后的版本,执行以下SQL

change replication source to host='xxx.xxx.xxx.xxx', source_user='xxx',soucre_password='xxx',source_log_file='xxx',source_log_pos=xxx;

      mysql-8.0.23以前的版本,执行以下SQL,但是mysql-8.0.23以后的版本也是兼容mysql-8.0.23以前的这个SQL的,所以怕麻烦去查版本的,可以直接使用这个mysql-8.0.23以前的

change master to master_host='xxx.xxx.xxx.xxx',master_user='xxx',master_password='xxx',master_log_file='xxx',master_log_pos='xxx'

      参数解释

    • source_host/master_host:  主库IP地址。
    • source_user/master_user:连接主库的用户名。
    • source_password/master_password:连接主库的密码。
    • source_log_file/master_log_file:binlog日志文件名。
    • source_log_pos/master_log_pos:binlog日志文件位置,这个参数是不用加引号或单引号的。

      示例:注意该语句一定要在从库上执行

change master to master_host='10.0.3.93',master_user='houlei',master_password='Se7eN521',master_log_file='binlog.000005',master_log_pos=156

 

    4、启动主从复制

    • mysql-8.0.23之后:start replica;
    • mysql-8.0.23之前:start slave;

    

    5、查看主从同步状态

    • mysql-8.0.23之后:show replica status\G;
    • mysql-8.0.23之前:show slave status\G; 

    

    说明1:这里主要看Slave_IO_Running和Slave_SQL_Running这两个是否为YES,全部为YES说明配置成功

五、主从复制测试

  

  说明1:主从原始的都是只有四张系统表

  

  说明2:主服务器上创建了一个数据库db01,在从服务器上查询,就马上显示了刚创建的db01

  

  说明3:在主服务器上创建了一张表,马上就主从复制到了从服务器上

   

  说明4:主表中插入数据,也会马上复制到从表中,同样的修改和删除数据也会同步复制过去。

 

标签:主库,主从复制,运维,xxx,master,mysql,MySQL
From: https://www.cnblogs.com/Se7eN-HOU/p/17733396.html

相关文章

  • mysql查询优化
     最近出现一个问题,mysql历史月表的数据达到2000万左右的时候大概是16G,我们的历史月表有20多个字段。查询速度,非常的慢。  为此,我们花费了一周的时间解决这个查询性能的问题。  首先,我们把当前表的建表语句show了一下,发现字段默认的排序规则是:COLLATE=utf8mb4_0900_ai_ci,......
  • 导入mysql文件报错
    mysql报错:「ERR」1273-Unknowncollation:'utf8mb4_0900_ai_ci'专注数据库知识分享2022-09-2719:05甘肃#MySQL专栏#mysql导入sql文件报错:[ERR]1273-Unknowncollation:'utf8mb4_0900_ai_ci'大致原因:sql对应的mysql版本高于当前要导入的mysql库的版本,引发......
  • mysql入门和高级教程概念
    入门教程MySQL是一个流行的开源关系型数据库管理系统,被广泛用于各种应用程序和网站开发中。以下是一个简单的MySQL教程,介绍了如何入门使用MySQL数据库:1.安装MySQL首先,您需要在计算机上安装MySQL数据库。您可以从MySQL官方网站下载适用于您的操作系统的MySQL安装程......
  • MySQL limit用法
    1、Mysql的limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能。 SELECT*FROMtableLIMIT[offset,]rows|rowsOFFSEToffset  LIMIT子句可以被用于强制SELECT语句返回指定......
  • MYSQL 连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:未将对
    一:中文提示:连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:未将对象引用设置到对象的实例。DbType="MySql";ConfigId="".EnglishMessage:Connectionopenerror.未将对象引用设置到对象的实例。DbType="MySql";ConfigId="" 解决方法:在连接字......
  • 数据库 - MySQL转换SQL Server时,替换 FIND_IN_SET 函数引发的问题
    MySQL转换SQLServer时,替换FIND_IN_SET函数引发的问题 在之前的文章中,我列举出了一个当MySQL转换SQLServer时,FIND_IN_SET函数在SQLServer中的解决方案:链接 就是使用charindex(cast(匹配列asvarchar(50)),被匹配列(多个用,分开的值))<![CDATA[>]]>0替换MyS......
  • MySQL IFNULL函数
    MySQLIFNULL函数简介MySQLIFNULL函数是MySQL控制流函数之一,它接受两个参数,如果不是NULL,则返回第一个参数。否则,IFNULL函数返回第二个参数。两个参数可以是文字值或表达式。以下说明了IFNULL函数的语法: 1IFNULL(expression_1,expression_2); 如果expression_1不为NULL,则......
  • Kubernetes创建MysQL
    原文:https://www.cnblogs.com/wenkuna/p/16985512.html创建数据存储PV、PVC这里我们使用nfs作为storageclass,具体yaml文件如下:yaml#创建PVapiVersion:v1kind:PersistentVolumemetadata:name:mysqlspec:storageClassName:manualcapacity:storage:20Gi......
  • Dockerfile如何制作mysql镜像
    原文:https://blog.csdn.net/dwd22/article/details/130705146Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。1.编写dockerfile_mysql5.7在文件夹/root/dockerfile/mysql创建文件......
  • MySQL的SQL语句优化
    一、拿到SQL之后,用执行计划查看参数。explainselect1from`d_ec_hyx`.`t_advertiser_info`where1=1andf_corp_id=15930142andf_typein(1,4)andf_refund_status=1limit1 二、执行计划ID。1、id相同,执行顺序从上往下;2、id不同,如果是子查......