mysql5.7.26做主从复制配置

一、首先两台服务器安装好mysql数据库环境

参照linux rpm方式安装mysql5.1

https://www.cnblogs.com/sky-cheng/p/10564604.html

二、主库master上创建主从复制账号

mysql> grant replication slave,replication client on *.* to ‘repl‘@‘%‘ identified by ‘[email protected]‘;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select user,host from user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| repl          | %         |
| root          | %         |
| mysql.session | localhost |
| mysql.sys     | localhost |
+---------------+-----------+
4 rows in set (0.00 sec)

三、Master、Slave上分别设置不同的Server_id,主库上开启二进制日志

mysql> show variables like ‘%server_id%‘;
+----------------+-------+
| Variable_name  | Value |
+----------------+-------+
| server_id      | 0     |
| server_id_bits | 32    |
+----------------+-------+

如果配置文件没有设置server_id参数,则默认都是0

编辑/etc/my.cnf

添加service_id,它的值可以跟服务器的IP最后一位数字一样,这样就能保证内网中的服务器ID不重复。master上

server_id=103
log-bin=master
binlog_format=row

slave上

server_id=69

四、将主库做一次全量备份,并恢复到从库上

在主库上操作

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.00 sec)

主库有一个test数据库

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test           |
+----------------+
1 row in set (0.00 sec)

有一个test表

mysql> select * from test;
+------+------+
| id   | name |
+------+------+
|    1 | aaaa |
+------+------+
1 row in set (0.00 sec)

表里有一条数据,开始备份主库

[[email protected] data]# mysqldump -uroot -p --all-databases > /home/mysql-5.7.26/bak/bak.sql[[email protected] data]# scp -P25601 /home/mysql-5.7.26/bak/bak.sql [email protected]:/home/mysql-5.7.26/bak/

在从库上操作,恢复主库数据
[[email protected] log]# mysql -uroot -p < /home/mysql-5.7.26/bak/bak.sql
Enter password:
[[email protected] log]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.26 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

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> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.00 sec)

mysql> 

此时,从库里test数据库有了,里面也有test数据表里记录

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.00 sec)

mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from test
    -> ;
+------+------+
| id   | name |
+------+------+
|    1 | aaaa |
+------+------+
1 row in set (0.01 sec)

五、在slave上change msater 操作配置主从复制

首先获取主库日志文件名称和偏移量

mysql> show master status \G;
*************************** 1. row ***************************
             File: master.000001
         Position: 154
     Binlog_Do_DB:
 Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)

ERROR:
No query specified

mysql> 

在从库上执行

mysql> change master to
    -> master_host=‘172.28.18.103‘,
    -> master_port=3306,
    -> master_user=‘repl‘,
    -> master_password=‘[email protected]‘,
    -> master_log_file=‘master.000001‘,
    -> master_log_pos=154;
Query OK, 0 rows affected, 2 warnings (0.21 sec)

启动从库

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

查看从库状态

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 172.28.18.103
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master.000001
          Read_Master_Log_Pos: 154
               Relay_Log_File: localhost-relay-bin.000002
                Relay_Log_Pos: 317
        Relay_Master_Log_File: master.000001
             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: 154
              Relay_Log_Space: 528
              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: 103
                  Master_UUID: ddbee8c3-76da-11e9-9174-90b11c15be09
             Master_Info_File: /home/mysql-5.7.26/data/master.info

此时:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

主从复制配置已经生效

六、测试数据

在主库插入一条数据

mysql> insert test values(2,‘bbbb‘);
Query OK, 1 row affected (0.03 sec)

从库上查询

mysql> select * from test;
+------+------+
| id   | name |
+------+------+
|    1 | aaaa |
|    2 | bbbb |
+------+------+
2 rows in set (0.00 sec)

数据已经复制成功了。

原文地址:https://www.cnblogs.com/sky-cheng/p/10895520.html

时间: 2024-10-02 21:42:51

mysql5.7.26做主从复制配置的相关文章

mysql5.6.x GTID主从复制配置

本文环境:   主库:CentOS6.7 x64 192.168.0.65 mysql-5.6.29    备库:CentOS6.7 x64 192.168.0.66 mysql-5.6.29 一.配置Mysql5.6 GTID主从(本节配置适合主从都是空库的情况) 1. mysql主服务器配置 说明: 基于GTID的主从复制需要在配置文件中添加如下内容. # vi /etc/my.cnf [mysqld]   binlog-format                = ROW    log-

mysql5.7.26 基于GTID的主从复制环境搭建

简单工作原理: (1)从库执行 change master to 语句,会立即将主库信息记录到master.info中 (2)从库执行 start slave语句,会立即生成IO_T和SQL_T (3)IO_T 读取master.info文件,获取到主库信息 (4)IO_T 连接主库,主库会立即分配一个DUMP_T,进行交互 (5)IO_T 根据master.info binlog信息,向DUMP_T请求最新的binlog (6)主库DUMP_T,经过查询,如果发现有新的,截取并反回给从库IO_

MySQL5.6基于GTID的主从复制配置

全局事务标示符(Global Transactions Identifier)是MySQL 5.6复制的一个新特性. GTID实际上是由UUID+TID组成的.其中UUID是一个MySQL实例的唯一标识.TID代表了该实例上已经提交的事务数量,并且随着事务提交单调递增.下面是一个GTID的具体形式. 1.在MySQL5.6以前对于主从复制出现问题有时候需要你分析BINLOG找到POS点,然后在CHANG MASTER TO.对于新手来说很容易犯错,造成主从复制错误.在新版本中,不必在需要寻找BI

Mysql5.7 主从复制配置

1.环境 Centos 7 Mysql 5.7 Master  192.168.1.71 Slave01 192.168.1.72 2.分别配置master,slave01 # vi /etc/my.cnf [mysqld]       log-bin=mysql-bin   //[必须]启用二进制日志                                        ------新增       server-id=71      //[必须]服务器唯一ID,slave01此处为7

MySQL 5.6 主从复制配置

一.前言:为什么MySQL要做主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低.为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻主数据库的负载.而且如果主数据库宕机,可快速将业务系统切换到从数据库上,可避免数据丢失. 二.MySQL主从复制(读写分离)和集群的区别: 1.主从复制(读写分离):一般需要两台及以上数据库服务器即可(一台用于写入数据,一台用于同步主的数据并用于数据查询操作).局限性:(1)配置好主从复制之后,

Ubuntu15.04下源码安装MySQL5.6.26数据库

解决Ubuntu 15.04版下源码编译安装MySQL5.6.26数据库问题,这里提供依赖包下载,源码安装方法. (1)安装编译源码需要的包 sudoapt-get install make cmake gcc g++ bison libncurses5-dev 依赖包在博客附件里有下载.下面也有说明一些解决方法. 另外的:cmake-2.8.3.tar.gz安装啊.bison_3.0.2.dfsg-2_i386.deb.ncurses-5.9.tar.gz的依赖缺少的话自己可以去下载安装,由于

LAMP——httpd 2.4.20 + mysql-5.6.26 + php-5.6.22编译安装过程

httpd 2.4.20 + mysql-5.6.26 + php-5.6.22编译安装过程: 资源准备 系统:centos6.5 PHP:wget http://docs.php.net/distributions/php-5.6.22.tar.gz MySQL:wget http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.26.tar.gz APACHE:wget http://mirrors.noc.im/apache//httpd/http

使用 Xtrabackup 在线对MySQL做主从复制【转】

1. 说明 1.1 xtrabackup mysqldump对于导出10G以下的数据库或几个表,还是适用的,而且更快捷.一旦数据量达到100-500G,无论是对原库的压力还是导出的性能,mysqldump就力不从心了.Percona-Xtrabackup备份工具,是实现MySQL在线热备工作的不二选择,可进行全量.增量.单表备份和还原.(但当数据量更大时,可能需要考虑分库分表,或使用 LVM 快照来加快备份速度了) 2.2版本 xtrabackup 能对InnoDB和XtraDB存储引擎的数据库

使用 Xtrabackup 在线对MySQL做主从复制

1. 说明 1.1 xtrabackup mysqldump对于导出10G以下的数据库或几个表,还是适用的,而且更快捷.一旦数据量达到100-500G,无论是对原库的压力还是导出的性能,mysqldump就力不从心了.Percona-Xtrabackup备份工具,是实现MySQL在线热备工作的不二选择,可进行全量.增量.单表备份和还原.(但当数据量更大时,可能需要考虑分库分表,或使用 LVM 快照来加快备份速度了) 2.2版本 xtrabackup 能对InnoDB和XtraDB存储引擎的数据库