首页 > 数据库 >(二)mysql一主一从

(二)mysql一主一从

时间:2022-11-20 11:31:06浏览次数:44  
标签:-- master01 SSL 一主一 master mysql Master

1、环境说明

操作系统:centos7.9
mysql版本:mysql5.7
安装方式:yum源安装

2、环境准备

  1. 准备两台全新的机器
  2. 完成系初始化操作
    1. 关闭防火墙
    2. 关闭selinux
    3. 配置yum源
  3. 安装mysql5.7

3、主从原理

image.png

4、master配置

  1. 创建用于同步数据的用户
mysql> grant replication slave replication client on *.* to 'rep'@'192.168.100.%' idenfitied by 'Admin@123';

replication slave replication client -- 用于主从复制的权限
'rep'	-- 用户名
'192.168.100.%' -- 远程登录的主机
  1. 开启二进制日志
[root@master01 ~]# vim /etc/my.cnf  
[mysqld]
···
log_bin			# 开启二进制日志文件,默认是注释的
server-id=1		# mysql服务的id号,搭建集群需要使用且每台的id号不同

重启mysql服务
systemctl restart mysqld
  1. 备份原有的数据库(如果是新的数据库则略过此步骤)
[root@master01 ~]# mysqldump -uroot -p'Admin@123' --all-databases --single-transaction --master-data=2 --flush-logs > `date +%F`-mysql-all.sql

--single-transaction 参数来获得一致性备份,减少锁表
--master-data = 2 参数记录主库 binlog 信息
--all-databases 备份所有的数据

[root@master01 ~]# ll
-rw-r--r--. 1 root root 881287 Nov 20 18:35 2022-11-20-mysql-all.sql

将备份的数据拷贝到从数据库中
[root@master01 ~]# scp 2022-11-20-mysql-all.sql master02:/root/

5、slave配置

  1. 测试rep账号
[root@master02 ~]# mysql -u rep -p'Admin@123' -h 192.168.100.41
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 5.7.40-log MySQL Community Server (GPL)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
  1. 启动服务器的序列号
[root@master02 ~]# vim /etc/my.cnf  
[mysqld]
···
log_bin		# 从节点可以不用开启二进制日志,没有节点再向从节点同步
server-id=1	# mysql服务的id号,搭建集群需要使用且每台的id号不同

重启mysql服务
systemctl restart mysqld
  1. 同步备份的数据
mysql> set sql_log_bin=0;	#临时关闭二进制日志,只在当前会话生效
mysql> source 2022-11-20-mysql-all.sql
查看测试数据是否同步
mysql> select * from  blog.user;
+------+------+
| id   | name |
+------+------+
|    1 | tom  |
|    2 | lily |
+------+------+
3 rows in set (0.00 sec)
  1. 设置住服务器
mysql> change master to mstart_host='master01', master_user='rep' master_password='Admin@123',master_log_file='master01-bin.000002',master_log_pos=154;

master_log_file		-- 指定二进制日志位置
master_log_pos		-- 指定从二进制日志的哪一行开始同步
ps:这两条信息在备份的sql文件中的22行,如果是新数据库不需要添加
-- CHANGE MASTER TO MASTER_LOG_FILE='master01-bin.000002', MASTER_LOG_POS=154;
  1. 启动从节点
mysql> start slave;
查看从节点的状态
mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: master01
                  Master_User: rep
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master01-bin.000002
          Read_Master_Log_Pos: 413
               Relay_Log_File: master02-relay-bin.000002
                Relay_Log_Pos: 582
        Relay_Master_Log_File: master01-bin.000002
             Slave_IO_Running: Yes	#读取二级制日志的IO线程
            Slave_SQL_Running: Yes	#执行中继日志的SQL线程
              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: 413
              Relay_Log_Space: 792
              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: 95d807d0-68b9-11ed-ac83-000c29fa43dc
             Master_Info_File: /var/lib/mysql/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)

ERROR: 
No query specified


再次查看你数据库中的测试数据,新生成的数据已经同步成功
mysql> select * from  blog.user;
+------+------+
| id   | name |
+------+------+
|    1 | tom  |
|    2 | lily |
|    3 | jack |
+------+------+
3 rows in set (0.00 sec)

https://www.bilibili.com/video/BV1oA411i73S?p=31&vd_source=b5bfcdfba8f2fb2a2247899ae27dd751

标签:--,master01,SSL,一主一,master,mysql,Master
From: https://blog.51cto.com/u_15743393/5871317

相关文章

  • MySQL知识点(一)
    MySQL知识点(一)目录MySQL知识点(一)一、B树和B+树之间的区别是什么?1、B树2、B+树二、Innodb中的B+树是怎么产生的?三、高度为3的B+树能存多少条数据?四、Innodb引擎是如......
  • mysql字段类型大小了解
    转自:https://www.kancloud.cn/thinkphp/mysql-design-optimalize/393251.数值类型 可以通过它来计算查询结果集所占大小,一行数据占的内存大小。2.字符串类型 3.时......
  • mysql 索引优化原则总结(limit where in like )
    优化原则:1.wherein和like效果等同,所以如果某个字段需要wherein或者like,请将该字段放到索引的最后2.limitstartnum,当start越大时候扫描的行数越多(即便是命中索引),越......
  • MySQL
    关于java.lang.Class类的理解1.类的加载过程:程序经过javac.exe命令以后,会生成一个或多个字节码文件(.class结尾)。接着我们使用java.exe命令对某个字节码文件进行解释运行。......
  • mysql索引的排列顺序
    索引的排序是按照定义索引的顺序来的索引的顺序要遵循三个规则要遵循最左前缀无论是多个还是一个列的索引都不应该跳过最左列如果在查询语句当中没有使用最左前缀的字......
  • MySQL高级知识——Order By关键字优化
    在使用orderby时,经常出现Usingfilesort,因此对于此类sql语句需尽力优化,使其尽量使用Usingindex。1.准备1.1创建test表。droptableifexiststest;createtabletest(......
  • Docker安装mysql
    1、拉取mysql镜像(或者指定版本也行,例如dockerpullmysql5.7)dockerpullmysql 2、创建挂载目录数据库的配置和数据文件,不适合放容器内部,需要挂在到宿主机上......
  • mysql客户端与服务端学习
    转自:https://www.cnblogs.com/Sungeek/p/12200546.html,https://juejin.cn/post/71198789415898972471.连接方式只考虑在Linux环境下,在不同主机之间是TCP/IP连接(不同主机......
  • 换了个电脑,在win10上安装mysql5.7.26并通过mysql data目录下文件进行数据库恢复
    1、官网上mysql5.7.26是通过解压出文件执行mysqld.exe进行安装的;注意:有个my.ini文件需要新建并放到mysql解压出来的根目录中;安装遇到问题的处理解决参考:mysql5.7安装M......
  • mysql将周转换成标准的日期格式区间
    周转换成标准的格式区间selectds,WEEKDAY(ds),emp坐席互聊组数/emp坐席沟通组数as互聊率,客户发送会话量/客户沟通数as客户日均发送会话量--concat(DATE_AD......