MySQL(5.6)主从备份(本文不适用于5.7和8.0版本)
2023-12-13 本文已影响0人
Sam小兄弟
作者:Sam
主从备份
主
- 开启log-bin和server-id
vi /etc/my.cnf
[mysqld]
...
log-bin=binlog
server-id=10
...
- 授权从服务器登录信息
grant replication slave on *.* to slave@'192.168.3.11' identified by '123456'
参数解析:
replication:授权复制功能
*.* :表示什么数据库.什么表
slave@'192.168.3.11':表示什么用户以哪个源地址来接入主服务器
identified by '123456':设置密码 - 刷新权限
flush privileges;
从
- 开启log-bin和server-id
vi /etc/my.cnf
[mysqld]
...
log-bin=binlog
#server-id不能和主服务器一样
server-id=20
...
- 查看master的log文件和position
show master status;
- 指定master
change master to
master_user='slave',
master_password='123456',
master_host='192.168.3.10',
master_port=3306,
master_log_file='bin-log.000001',
master_log_pos=1146;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
- 启动slave功能
start slave;
- 查看slave状态
show slave status \G;
如果看到
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
则表示主从连接成功
关闭主从功能
-
在主服务器上删除授权用户,或者取消用户授权
1.1delete from user where User='slave;
or
revoke replication on *.* from slave
or
update user set Repl_slave_priv='Y' where User='slave'
1.2flush privileges;
-
从服务器通知slave功能,并重置master信息
stop slave
reset slave all
主主备份
把“主从备份”中的从服务器作为主服务器,再做一遍主从备份即可
一主多从
主
授权多个用户
从
配置master信息即可,和主从备份一样
多主一从
主1
- 配置my.cnf
[mysqld]
log-bin=bin-log
server-id=100
- 授权从服务器
grant replication slave on *.* to slave@'192.168.3.100' identified by '123456';
主2
- 配置my.cnf
[mysqld]
log-bin=bin-log
server-id=200
- 授权从服务器
grant replication slave on *.* to slave@'192.168.3.100' identified by '123456';
从
- 配置my.cnf
[mysqld]
不要写log-bin
不要写server-id
#开启多进程功能
[mysqld_multi]
#指定启动脚本
mysqld=/usr/bin/mysqld_safe
mysqladmin=/usr/bin/mysqladmin
#指定日志文件
log=/tmp/multi.log
定义一个实例
[mysqld100]
port=3306
datadir=/var/lib/myql100/
pid-file=/var/lib/mysql100/mysqld.pid
socket=/var/lib/mysql100/mysql.sock
user=mysql
#于主服务器上一样
server-id=100
定义一个实例
[mysqld200]
port=3307
datadir=/var/lib/myql200/
pid-file=/var/lib/mysql200/mysqld.pid
socket=/var/lib/mysql200/mysql.sock
user=mysql
#于主服务器上一样
server-id=200
- 初始化实例的数据库目录
mysql_install_db --datadir=/var/lib/mysql100 --user=mysql
mysql_install_db --datadir=/var/lib/mysql200 --user=mysql
- 修改生成数据库目录的权限
chown -R mysql /var/lib/mysql100/
chown -R mysql /var/lib/mysql200/
- 启动实例进程
mysqld_multi --defaults-file=/etc/my.cnf start 100
mysqld_multi --defaults-file=/etc/my.cnf start 200
最后的100是server-id
启动之后用netstat -tunpl
能看到3306和3307端口 - 登录实例
mysql -S /var/lib/mysql100/mysql.sock
mysql -S /var/lib/mysql100/mysql.sock
- 修改master信息
查看主master信息
show master status;
修改从master信息
change master to
master_user='slave',
master_password='123456',
master_host='192.168.3.10',
master_log_file='bin-log-000001',
master_log_pos=1106;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
- 启动slave
start slave;
- 查看slave状态
show slave status \G;
关闭主从状态
主
修改授权用户即可,和前两个一样
从
- 关闭slave状态
stop slave;
reset slave all;
- 关闭实例
mysqld_multi --defaults-file=/etc/my.cnf stop 100
mysqld_multi --defaults-file=/etc/my.cnf stop 200
Amoeba中间件
Linux MySQL Amoeba中间件配置实例
Amoeba