前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL的主从复制

MySQL的主从复制

作者头像
用户1456517
发布2019-03-05 16:04:04
5710
发布2019-03-05 16:04:04
举报
文章被收录于专栏:芝麻实验室芝麻实验室

环境说明:

代码语言:javascript
复制
- Master:192.168.26.134 (CentOS 7)
- Slave :192.168.26.132 (CentOS 7)
- Mariadb Server Version:5.5.56

准备工作

  • 时间同步。请注意,时间同步极其重要。
代码语言:javascript
复制
# yum -y install ntpdate
# ntpdate 172.18.0.1 #修改为你本地的时间同步服务器或公共时间同步服务器
  • 安装Mariadb-Server
代码语言:javascript
复制
# yum -y install mariadb-server
# mysql_secure_installation

配置Master DB

  • 开启Master端的二进制日志
代码语言:javascript
复制
[root@master ~]# vim /etc/my.cnf.d/server.cnf 
    [server]
    log_bin=/data/logs/bin-log #修改默认路径,路径名(/data/logs)为二进制日志存放目录,基名(bin-log)为二进制日志前缀,应尽量做到见名知义
    server_id=1 #DB服务器唯一识别id
[root@master ~]# mkdir -pv /data/logs #创建相应目录
[root@master ~]# chown -R mysql:mysql /data/logs #务必授权mysql用户为所有者(组), 否则DB Server将启动失败
[root@master ~]# systemctl restart mariadb

配置Slave DB

  • 开启Slave的中继日志
代码语言:javascript
复制
[root@slave ~]# vim /etc/my.cnf.d/server.cnf 
    [server]
    skip_name_resolve=on #忽略主机名解析,可以提升服务器效率
    innodb_file_per_table=on #为 InnoDB 引擎使用独立表空间
    max_connections=20000 #最大并发连接数
    relay_log=/data/logs/relay-log #同上,此处为中继日志前缀
    server_id=2 
[root@slave ~]# mkdir -pv /data/logs #创建相应目录
[root@slave ~]# chown -R mysql:mysql /data/logs #同上,须授权mysql用户方可正常启动服务
[root@slave ~]# systemctl restart mariadb

授权

代码语言:javascript
复制
[root@master ~]# mysql -uroot -p
MariaDB [testdb]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO syncuser@'192.168.26.%' IDENTIFIED BY 'guomai'; #授权syncuser用户读取Master端二进制文件和POS
Query OK, 0 rows affected (0.00 sec)

MariaDB [testdb]> SHOW MASTER STATUS \G #记录二进制文件名和POS值。Slave端基于这2个值实现对Master端的数据同步
*************************** 1. row ***************************
            File: bin-log.000001
        Position: 1704
    Binlog_Do_DB: 
Binlog_Ignore_DB: 
1 row in set (0.00 sec)

Slave端

代码语言:javascript
复制
MariaDB [(none)]> help change master to #获取帮助
MariaDB [(none)]> CHANGE MASTER TO 
    -> MASTER_HOST='192.168.26.134',
    -> MASTER_USER='syncuser',
    -> MASTER_PASSWORD='guomai',
    -> MASTER_LOG_FILE='bin-log.000001',
    -> MASTER_LOG_POS=1704;

MariaDB [(none)]> START SLAVE IO_THREAD, SQL_THREAD; #启动IO线程和SQL线程复制Master端数据
Query OK, 0 rows affected (0.00 sec)

测试

  • 在Master上创建测试数据库和数据表
代码语言:javascript
复制
[root@master ~]# mysql -uroot -p
MariaDB [(none)]> create database testdb;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> use testdb;
Database changed

MariaDB [testdb]> create table students (
    -> id int primary key,
    -> name varchar(20),
    -> age int
    -> );
Query OK, 0 rows affected (0.75 sec)

MariaDB [testdb]> insert into students values (1,"xiaoqiu","22"),(2,"xiaomu","21"),(3,"guomai","23");
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

MariaDB [testdb]> select * from students;
+----+---------+------+
| id | name    | age  |
+----+---------+------+
|  1 | xiaoqiu |   22 |
|  2 | xiaomu  |   21 |
|  3 | guomai  |   23 |
+----+---------+------+
3 rows in set (0.00 sec)
  • 查看Slave端是否同步成功
代码语言:javascript
复制
MariaDB [testdb]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| testdb             |
+--------------------+
4 rows in set (0.00 sec)

MariaDB [testdb]> use testdb;
Database changed
MariaDB [testdb]> SHOW TABLES;
+------------------+
| Tables_in_testdb |
+------------------+
| students         |
+------------------+
1 row in set (0.00 sec)

MariaDB [testdb]> SELECT * FROM students; #如下,可以确定主从复制成功。在Master端执行的任何操作都在在Slave端同步呈现。
+----+---------+------+
| id | name    | age  |
+----+---------+------+
|  1 | xiaoqiu |   22 |
|  2 | xiaomu  |   21 |
|  3 | guomai  |   23 |
+----+---------+------+
3 rows in set (0.00 sec)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017/12/08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档