MySQL - 主从同步

MySQL - 主从同步

目录

环境准备

MySQL核心配置

数据同步

 数据备份


环境准备

  • 两台mysql

MySQL核心配置

1.【必须】主服务器唯一ID
server-id =1
2.【必须】启用二进制日志
log-bin=自己本地的路径/mysqlbin
3.【可选】启动错误日志
log-err=自己本地的路径/mysqlerr
4.【可选】根目录
basedir="自己本地路径"
5.【可选】临时目录
tmpdir="自己的本地路劲"
6.【可选】数据目录
datadir="自己本地路径/Data/"
7.read-only=0
主机,读写都可以,0或者false表示关闭,读写都支持;1或者true便是开启,只支持读取数据,但是只对普通用户生效
8.【可选】设置不要复制的数据库
binlog-lgnore-db=mysql
9.【可选】设置需要复制的数据
binlog-do-db=需要复制的主数据库名字

vim /etc/my.cnf
  • 主节点配置
    • mysql之间数据备份用的是日志实现
    • 只需要在核心配置文件增加 log-bin 和 server-id 配置即可
    • server-id 全局唯一,多个节点不可重复
[client]
port=3306
socket=/tmp/mysql/mysql.sock

[mysqld]
port=3306
user=mysql
socket=/tmp/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
log-error=error.log

transaction_isolation = READ-COMMITTED
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
lower_case_table_names = 1
#开启可以跳过认证,免密登录
#skip-grant-tables

default_authentication_plugin=mysql_native_password

log-bin=mysql_1
server-id=1
  • 从节点配置 
    • 只需要配置 server-id 即可
    • server-id 全局唯一,多个节点不可重复
[client]
port=3306
socket=/tmp/mysql/mysql.sock

[mysqld]
port=3306
user=mysql
socket=/tmp/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
log-error=error.log

transaction_isolation = READ-COMMITTED
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
lower_case_table_names = 1
#开启可以跳过认证,免密登录
#skip-grant-tables

default_authentication_plugin=mysql_native_password

server-id=2

数据同步(主节点操作)

  • 创建数据同步账号主节点创建即可
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
  • 重启MySQL服务 (主节点操作)
systemctl restart mysql.service

 数据备份(主节点操作)

  • #锁表,暂时不接受任何写操作
FLUSH TABLES WITH READ LOCK;
  • 查看当前 bin-log 文件 和数据偏移量
    • 会根据数据库写操作发生变化,锁表->备份数据->恢复锁,必须一气呵成
mysql > SHOW MASTER STATUS;

  • dump主节点数据
    • 缺少dump指令,建立软连接即可
      • ln -s  /usr/local/mysql/bin/mysqldump  /usr/bin
      • /usr/local/mysql/bin/mysqldump 当前mysql安装路径
mysqldump --all-databases --master-data > dbdump.db -uroot -p
  • 将文件发送只从节点
scp ./dbdump.db root@192.168.213.162:/root/
  • 从节点dump同步数据
# 可以在系统中直接使用使用如下命令
mysql < /root/dbdump.db -uroot -p
# 也可以在mysql命令行中使用如下命令
#临时修改
mysql> show variables like 'sync_binlog';
mysql> set global sync_binlog = 2000;
mysql> set global innodb_flush_log_at_trx_commit = 2;

mysql> source /root/dbdump.db;

# 同步完成后恢复 global sync_binlog global innodb_flush_log_at_trx_commit 原有值

  • 从节点连接主机
    • MASTER_HOST:主节点地址
    • MASTER_PORT:主节点端口号,默认端口可以省略
    • MASTER_USER:同步通讯用的账号
    • MASTER_PASSWORD:同步通讯用的账号的密码
    • MASTER_LOG_FILE:bin-log 文件
    • MASTER_LOG_POS:偏移量
mysql> 
CHANGE MASTER TO 
MASTER_HOST='192.168.213.156', 
MASTER_PORT=3306,
MASTER_USER='repl', 
MASTER_PASSWORD='repl', 			        
MASTER_LOG_FILE='mysql_1.000002',			   
MASTER_LOG_POS=155;
  • 开始同步,标记当前为从节点
mysql> START SLAVE;
  • 主节点释放锁
    • 在释放锁之前不可关闭mysql客户端,结束会话,当前锁时效
mysql> UNLOCK TABLES;
  •  从节点查看从节点状态
show slave status;

 看到master-log-bin.000003 | Yes | Yes 就表示成功了

  • 从节点操作
# 停止从节点工作
mysql> stop slave ;

# 启动从节点工作
mysql> start slave ;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL主从同步是一种常用的数据库复制技术,用于将一个MySQL数据库的数据和操作同步到其他MySQL数据库上。主从同步可以提高数据库的可用性、可扩展性和数据备份能力。下面是MySQL主从同步的基本原理和步骤: 1. 主从角色:在主从同步中,有一个主数据库(Master)和一个或多个从数据库(Slave)。主数据库负责接收和处理所有的写操作,而从数据库则复制主数据库的数据和操作。 2. 二进制日志(Binary Log):主数据库会将所有的写操作记录在二进制日志中,包括插入、更新和删除等操作。二进制日志是主从同步的基础。 3. 主数据库配置:在主数据库上,需要开启二进制日志功能,并配置一个唯一的服务器ID。这个ID用于标识主数据库。 4. 从数据库配置:在从数据库上,需要配置主数据库的IP地址、端口号和二进制日志文件名等信息。从数据库会连接到主数据库,并请求复制二进制日志。 5. 复制过程:当从数据库连接到主数据库后,主数据库会将二进制日志中的数据和操作发送给从数据库。从数据库会解析并执行这些操作,以保持与主数据库的数据一致性。 6. 异步复制:默认情况下,MySQL主从同步是异步进行的,即主数据库不会等待从数据库执行完操作才返回。这样可以提高主数据库的性能,但也可能导致主从数据的稍许延迟。 7. 监控和故障处理:在主从同步中,需要定期监控主从数据库的状态,确保同步正常。如果出现故障或延迟,需要及时排查和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值