MySQL的Replication复制

文章详细介绍了如何在单台机器上部署多个MySQL实例,包括创建系统账户、解压安装、配置数据目录和socket文件,以及设置my.cnf文件。此外,还阐述了MySQL主从复制的概念,解释了复制过程和步骤,并提供了主从服务器的配置示例,包括创建复制用户、设置主从参数和启动复制进程。
摘要由CSDN通过智能技术生成

单机多实例部署

创建mysql系统账户
useradd -s /sbin/nologin -M mysql
解压tar包
tar -zxvf mysql5.7.tar.gz
mv mysql5.7 /usr/local/mysql
创建路径并赋值
mkdir -p /usr/local/var/mysql1
mkdir -p /usr/local/var/mysql2
mkdir -p /usr/local/var/mysql3

touch /tmp/mysql1.sock
touch /tmp/mysql2.sock
touch /tmp/mysql3.sock

chown mysql:mysql /tmp/mysql1.sock
chown mysql:mysql /tmp/mysql2.sock
chown mysql:mysql /tmp/mysql3.sock

chown mysql:mysql -R /usr/local/mysql
chown mysql:mysql -R /usr/local/var/
配置my.cnf
[mysqld_multi]
mysqld=/usr/local/mysql/bin/mysqld_safe
mysqladmin=/usr/local/mysql/bin/mysqladmin
user=root
pass=passwd

[mysqld1]
port=3306
socket=/tmp/mysql1.sock
datadir=/usr/local/var/mysql1

[mysqld2]
port=3307
socket=/tmp/mysql2.sock
datadir=/usr/local/var/mysql2

[mysqld3]
port=3308
socket=/tmp/mysql3.sock
datadir=/usr/local/var/mysql3

[mysqld]

创建环境变量(在尾部添加)
vi /etc/profile
export PATH=/usr/local/mysql/bin:$PATH

生效

source /etc/profile
启动
mysqld_multi --defaults-extra-file=/etc/my.cnf start
查看状态
mysqld_multi --defaults-extra-file=/etc/my.cnf report
注:如果my.cnf中没有user和pass参数则mysqld_multi stop不能停止实例
MySQL Replication概述

MySQL复制是指从一个MySQL主服务器(Master)将数据复制到另一台或多台MySQL从服务器(Slave)的过程,将主数据库的DDL和DML操作通过二进制日志传到从服务器上,然后在从服务器上对这些日志重新执行,从而使得主从服务器的数据保持同步。
在MySQL中,复制操作是异步进行的,Slave服务器不需要持续的保持连接用于接收Master服务器的数据。
MySQL支持一台主服务器同时向多台从服务器进行复制操作,从服务器同时可以作为其他从服务器的主服务器,如果MySQL主服务器访问量比较大,可以通过复制数据,然后在从服务器上进行查询操作,从而降低主服务器的访问压力,同时从服务器作为主服务器的备份,可以避免主服务器因为故障数据丢失的问题。
MySQL数据库复制操作大致可以分成三个步骤:

  1. 主服务器将数据的改变记录到二进制日志(binary log)中。
  2. 从服务器将主服务器的binary log events复制到它的中继日志(relay log)中
  3. 从服务器重做中继日志中的事件,将数据的改变与从服务器保持同步

不同服务器之间实现主从复制

角色ip
master172.16.164.133
slave172.16.164.136

主:

调整/etc/my.cnf

[mysqld]
datadir=/data
basedir=/usr/local/mysql
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
symbolic-links=0

log-bin=mysql-bin   # 必须打开binlog
server-id=1 # server-id与从不一致即可
read-only=0 # 0为可写,1为只读
binlog_format=row
binlog_row_image=minimal
[mysqld_safe]
log-error=/var/log/mysql/mysql.log
pid-file=/var/run/mysql/mysql.pid
[mysql]
default-character-set=utf8

重启mysql服务

登陆主端mysql,创建复制使用的账户并赋予权限:
mysql> create user 'repl'@'%' identified by 'p@ssw0rd';
mysql> grant replication slave on *.* to 'repl'@'%'; 
查看master参数
mysql> show master status;

返回:

FilePositionBinlog_Do_DBBinlog_Ignore_DBExecuted_Gtid_Set
mysql-bin.000002154

从:

调整/etc/my.cnf

[mysqld]
datadir=/data
basedir=/usr/local/mysql
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
symbolic-links=0

log-bin=mysql-bin
server-id=2
read-only=1
binlog_format=row
binlog_row_image=minimal
[mysqld_safe]
log-error=/var/log/mysql/mysql.log
pid-file=/var/run/mysql/mysql.pid
[mysql]
default-character-set=utf8

重启mysql服务

登陆mysql

mysql> stop slave;
mysql> change master to master_host='172.16.164.133',master_user='repl',master_password='p@ssw0rd',master_log_file='mysql-bin.000002',master_log_pos=154;
mysql> start slave;

查看slave参数

mysql> show slave status\G;

其中返回值中:
Slave_IO_Running,Slave_SQL_Running两个参数必须为Yes才能正常工作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盛者无名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值