MySQL(5.6)主从备份(本文不适用于5.7和8.0版本)

2023-12-13  本文已影响0人  Sam小兄弟

作者:Sam


主从备份

  1. 开启log-bin和server-id
vi /etc/my.cnf

[mysqld]
...
log-bin=binlog
server-id=10
...
  1. 授权从服务器登录信息
    grant replication slave on *.* to slave@'192.168.3.11' identified by '123456'
    参数解析:
    replication:授权复制功能
    *.* :表示什么数据库.什么表
    slave@'192.168.3.11':表示什么用户以哪个源地址来接入主服务器
    identified by '123456':设置密码
  2. 刷新权限
    flush privileges;

  1. 开启log-bin和server-id
vi /etc/my.cnf

[mysqld]
...
log-bin=binlog
#server-id不能和主服务器一样
server-id=20
...
  1. 查看master的log文件和position
    show master status;
  2. 指定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;
  1. 启动slave功能
    start slave;
  2. 查看slave状态
    show slave status \G;
    如果看到
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

则表示主从连接成功

关闭主从功能

  1. 在主服务器上删除授权用户,或者取消用户授权
    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.2 flush privileges;

  2. 从服务器通知slave功能,并重置master信息
    stop slave
    reset slave all

主主备份

把“主从备份”中的从服务器作为主服务器,再做一遍主从备份即可

一主多从

授权多个用户

配置master信息即可,和主从备份一样

多主一从

主1

  1. 配置my.cnf
[mysqld]
log-bin=bin-log
server-id=100
  1. 授权从服务器
    grant replication slave on *.* to slave@'192.168.3.100' identified by '123456';

主2

  1. 配置my.cnf
[mysqld]
log-bin=bin-log
server-id=200
  1. 授权从服务器
    grant replication slave on *.* to slave@'192.168.3.100' identified by '123456';

  1. 配置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
  1. 初始化实例的数据库目录
    mysql_install_db --datadir=/var/lib/mysql100 --user=mysql
    mysql_install_db --datadir=/var/lib/mysql200 --user=mysql
  2. 修改生成数据库目录的权限
    chown -R mysql /var/lib/mysql100/
    chown -R mysql /var/lib/mysql200/
  3. 启动实例进程
    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端口
  4. 登录实例
    mysql -S /var/lib/mysql100/mysql.sock
    mysql -S /var/lib/mysql100/mysql.sock
  5. 修改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;
  1. 启动slave
    start slave;
  2. 查看slave状态
    show slave status \G;

关闭主从状态

修改授权用户即可,和前两个一样

  1. 关闭slave状态
stop slave;
reset slave all;
  1. 关闭实例
    mysqld_multi --defaults-file=/etc/my.cnf stop 100
    mysqld_multi --defaults-file=/etc/my.cnf stop 200

Amoeba中间件

Linux MySQL Amoeba中间件配置实例
Amoeba

上一篇 下一篇

猜你喜欢

热点阅读