Centos7 Mysql5.6.40 主从服务搭建

本文详细介绍了在CentOS7系统中如何搭建多个MySQL实例,包括创建实例目录、配置文件、初始化数据及启动数据库。接着,通过设置主从复制,演示了主库授权、全备恢复、开启复制等步骤,确保主从服务正常运行。最后,阐述了主从复制的工作原理和相关线程管理。
摘要由CSDN通过智能技术生成

往期历史

1.docker安装MySQL源码编译

创建多实例环境

  1. 创建多实例目录;
[root@43812cb2f48a /]# mkdir  -p /data/330{7..9}/data
  1. 目录授权;
[root@43812cb2f48a /]# chown -R mysql.mysql  /data
  1. 创建mysql配置文件
[root@43812cb2f48a /]# vim  /data/3307/my.cnf
[mysqld]
server_id=7
port=3307
basedir=/application/mysql
datadir=/data/3307/data
log_bin=/data/3307/mysql-bin
log_error=/data/3307/mysql.log
socket=/data/3307/mysql.sock
skip_name_resolve
[root@43812cb2f48a /]# vim  /data/3308/my.cnf
[mysqld]
server_id=8
port=3308
basedir=/application/mysql
datadir=/data/3308/data
log_bin=/data/3308/mysql-bin
log_error=/data/3308/mysql.log
socket=/data/3308/mysql.sock
skip_name_resolve
[root@43812cb2f48a /]# vim  /data/3309/my.cnf
[mysqld]
server_id=9
port=3309
basedir=/application/mysql
datadir=/data/3309/data
log_bin=/data/3309/mysql-bin
log_error=/data/3309/mysql.log
socket=/data/3309/mysql.sock
skip_name_resolve
  1. 初始化数据;
[root@43812cb2f48a /]# /application/mysql/scripts/mysql_install_db --user=mysql --basedir=/application/mysql --datadir=/data/3307/data
[root@43812cb2f48a /]# /application/mysql/scripts/mysql_install_db --user=mysql --basedir=/application/mysql --datadir=/data/3308/data
 [root@43812cb2f48a /]# /application/mysql/scripts/mysql_install_db --user=mysql --basedir=/application/mysql --datadir=/data/3309/data

  1. 启动数据库;
 [root@43812cb2f48a /]# mysqld_safe --defaults-file=/data/3307/my.cnf &
 [root@43812cb2f48a /]# mysqld_safe --defaults-file=/data/3308/my.cnf &
 [root@43812cb2f48a /]# mysqld_safe --defaults-file=/data/3309/my.cnf &

错误: 可能遇到mysql写日志没权限或者日志文件不存在
解决办法执行:

 [root@43812cb2f48a /]# touch /data/330{7..9}/mysql.log
 [root@43812cb2f48a /]# chown -R mysql.mysql /data/*
  1. 查看是否启动多实例成功,查看端口号;
 [root@43812cb2f48a /]# netstat -lnp|grep 330
   tcp6       0      0 :::3307                 :::*                    LISTEN      273/mysqld    
   tcp6       0      0 :::3308                 :::*                    LISTEN      461/mysqld    
   tcp6       0      0 :::3309                 :::*                    LISTEN      652/mysqld    
   unix  2      [ ACC ]     STREAM     LISTENING     29814    652/mysqld           /data/3309/mysql.sock
   unix  2      [ ACC ]     STREAM     LISTENING     25574    273/mysqld           /data/3307/mysql.sock
   unix  2      [ ACC ]     STREAM     LISTENING     30745    461/mysqld           /data/3308/mysql.sock

主从搭建过程

  1. 主(master):127.0.0.1:3307
    从(slave):127.0.0.1:3308
  2. 主库中进行创建复制用户(权限是replication slave)
[root@43812cb2f48a /]# mysql -S /data/3307/mysql.sock
#mysql授权语句
mysql>grant replication slave on *.* to repl@'127.0.0.%' identified by '123';

  1. 全备主库, 恢复到从库
  • 主库备份
[root@43812cb2f48a /] mysqldump -S /data/3307/mysql.sock -A --master-data=2 -R --triggers --single-transaction >/tmp/full.sql
  • 从库恢复
[root@43812cb2f48a /]# mysql -S /data/3308/mysql.sock
mysql>set sql_log_bin=0;
mysql>source /tmp/full.sql
  1. 从库开启复制
  • 告诉从库从哪个位置号开始自动复制
[root@43812cb2f48a /]# head -30 /tmp/full.sql

在这里插入图片描述

[root@43812cb2f48a /]# mysql -S /data/3308/mysql.sock
mysql> help CHANGE MASTER TO #查看执行sql命令
mysql> CHANGE MASTER TO
  MASTER_HOST='127.17.0.2',
  MASTER_USER='repl',   #复制用户
  MASTER_PASSWORD='123',
  MASTER_PORT=3307,
  MASTER_LOG_FILE='msyql-bin.000002',#主库bin日志
  MASTER_LOG_POS=325, 
  MASTER_CONNECT_RETRY=10;   #连接重试次数
mysql> start slave  #启动主从
mysql> show slave status \G #主从复制监控(查看主从是否启动成功)

在这里插入图片描述
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
两个为yes代表主从搭建成功啦!!!

  1. 主库状态查看
[root@43812cb2f48a /]# mysql -S /data/3307/mysql.sock
mysql> show processlist;
mysql> show master status;
  1. 线程管理
    启动和关闭两个线程
[root@43812cb2f48a /]# mysql -S /data/3308/mysql.sock
mysql> reset slave all;    #如果连接信息填错可以重置master.info 在执行change master to
mysql> stop slave;
mysql> start slave;

单独启动关闭一个线程

[root@43812cb2f48a /]# mysql -S /data/3308/mysql.sock
mysql> stop slave io_thread;
mysql> stop slace sql_thread;
mysql> start slave io_thread;
mysql> start slace sql_thread;

复制工作原理

mysql 主从架构原理图

在这里插入图片描述

文件
M:
binlog:记录主库数据变化
S:
relay-log: 中继日志,储存从主库请求的二进制日志的储存位置
master.info:储存用户,密码,ip,port,记录上次请求过的binlog位置
relay-log.info:记录了上次sql线程执行过的relaylog的位置点

线程:
M:
dump(IO)thread(投递线程)
主库发从二进制日志给从库的线程

S:
IO thread:
请求binlog,接收binlog的线程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值