当前位置: 首页 > news >正文

Linux 数据库 Mysql8 主从复制

Linux下 MySQL 主从复制

复制原理:

  1. Mysql 中有一种日志叫做 bin 日志(二进制日志)。这个日志会记录下所有修改了数据库的SQL
    语句(insert,update,delete,create/alter/drop table, grant 等等)。
  2. 主从复制的原理其实就是把主服务器上的 bin 日志复制到从服务器上执行一遍,这样从服务器上的数据就和主服务器上的数据相同了。
  3. 主节点必须启用二进制日志,记录任何修改了数据库数据的事件。

复制流程图:
复制流程图

  • 注意:主从服务器的防火墙都要给mysql端口添加例外。也就是说两台服务器的mysql数据库可以互连。

主库

# 修改配置
vi /etc/my.cnf
# 或
vim /etc/my.cnf

配置文件 my.cnf 内容 修改完最好重启一下数据库

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html[client]
port=3306
socket=/var/lib/mysql/mysql.sock
default-character-set=utf8mb4[mysql]
default-character-set=utf8mb4[mysqld]
port=3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.socklog-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pidcharacter-set-server=utf8mb4
collation-server=utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'lower_case_table_names=1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIONskip-external-locking
skip_name_resolve
max_connect_errors=10slow_query_log=on
long_query_time=3key_buffer_size=128M
read_buffer_size=1M
read_rnd_buffer_size=2M
table_open_cache=64
sort_buffer_size=512K
net_buffer_length=8Kdefault_storage_engine=InnoDB
innodb_buffer_pool_size=1024M
innodb_flush_log_at_trx_commit=2
innodb_redo_log_capacity=256M
innodb_log_buffer_size=8M
innodb_redo_log_capacity=8388608
innodb_lock_wait_timeout=50#-----上面是数据库基本配置可以---下面这个是主要的#修改名称log-bin=mysql.bin
# Server Id.(可是设置自己ip 这里是 1)
server-id=1
log-bin=mysql-bin
# 需要同步的数据库(替换自己的数据库 这里用的 demo)
binlog-do-db=demo
# 使binlog在每N次binlog写入后与硬盘同步
sync-binlog=1# 1天时间自动清理二进制日志
binlog_expire_logs_seconds=86400# 不需要同步的数据库
binlog-ignore-db = mysql                                  
binlog-ignore-db = information_schema
binlog-ignore-db = sys
binlog-ignore-db = test
# Error Logging.

从库

# 修改配置
vi /etc/my.cnf
# 或
vim /etc/my.cnf

配置文件 my.cnf 内容 修改完最好重启一下数据库

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html[client]
port=3306
socket=/var/lib/mysql/mysql.sock
default-character-set=utf8mb4[mysql]
default-character-set=utf8mb4[mysqld]
port=3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.socklog-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pidcharacter-set-server=utf8mb4
collation-server=utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'lower_case_table_names=1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIONskip-external-locking
skip_name_resolve
max_connect_errors=10slow_query_log=on
long_query_time=3key_buffer_size=128M
read_buffer_size=1M
read_rnd_buffer_size=2M
table_open_cache=64
sort_buffer_size=512K
net_buffer_length=8Kdefault_storage_engine=InnoDB
innodb_buffer_pool_size=1024M
innodb_flush_log_at_trx_commit=2
innodb_redo_log_capacity=256M
innodb_log_buffer_size=8M
innodb_redo_log_capacity=8388608
innodb_lock_wait_timeout=50#-----上面是数据库基本配置可以---下面这个是主要的# 主库和从库的Server Id不能相同
# Server Id.
server-id=2# bind-address=192.168.1.2
relay_log = relay-bin
read_only = 1# 二进制日志自动删除的天数
binlog_expire_logs_seconds=86400

主库创建授权用户

# 登录 数据库
mysql -u root -p
# 创建用户--指定 IP 连接(从库IP 192.168.1.2)
CREATE USER '用户'@'IP' IDENTIFIED BY '密码';
# 授予复制权限
GRANT REPLICATION SLAVE ON *.* TO '用户'@'IP';
# 授予最高权限(不推荐)
GRANT ALL PRIVILEGES ON *.* TO '用户'@'IP' WITH GRANT OPTION;
# 刷新权限
FLUSH PRIVILEGES;
# 获取状态信息(主从连接会用到)
SHOW MASTER STATUS \G;

在这里插入图片描述

从库与主库建立联系

slave 与 master 建立连接,进行数据同步 master_host 主机ip; master_user 账号;master_password 密码;master_log_file、master_log_pos 都是在主机获取的

CHANGE MASTER TO MASTER_HOST='192.168.1.1',MASTER_USER='用户',MASTER_PASSWORD='密码',MASTER_LOG_FILE='mysql-bin.000005',MASTER_LOG_POS=876;

获取状态信息

# 获取状态信息
SHOW SLAVE STATUS \G;

配置成功

在这里插入图片描述

相关命令

数据库的

# 启动数据库
systemctl start mysqld
# 查看数据库状态
systemctl status mysqld
# 停止数据库
systemctl stop mysqld
# 重启数据库
systemctl restart mysqld

复制进程

# 停止复制进程
STOP SLAVE;
# 启动复制
START SLAVE;
# 重置复制状态,保留配置
RESET SLAVE;
# 完全清除复制配置
RESET SLAVE ALL;

防火墙

# 启动防火墙
systemctl start firewalld
# 查看防火墙状态
systemctl status firewalld
# 停止防火墙
systemctl stop firewalld

MySQL同步故障:“ Slave_SQL_Running:No“ 自己的解决方法

方法一:

# 查看错误信息
SHOW SLAVE STATUS \G;
# 停止复制进程
STOP SLAVE;
# 跳过事件
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; 
# 启动复制
START SLAVE; 
# 查看信息
SHOW SLAVE STATUS \G;

方法二:

MASTER_LOG_FILE 与 MASTER_LOG_POS 需要重新去主库 获取 配置自己的

# 查看错误信息
SHOW SLAVE STATUS \G;
# 停止复制进程
STOP SLAVE;
# 重新在配置一下 从库与主库建立联系
CHANGE MASTER TO MASTER_HOST='192.168.1.1',MASTER_USER='用户',MASTER_PASSWORD='密码',MASTER_LOG_FILE='mysql-bin.000005',MASTER_LOG_POS=876;
# 启动复制
START SLAVE; 
# 查看信息
SHOW SLAVE STATUS \G;
http://www.dtcms.com/a/407461.html

相关文章:

  • 做网站的图片房产国内免费推广网站
  • 建设网站需要分析什么条件云南软件开发项目管理
  • OpenHands+cpolar:AI编程助手的远程调试新方案
  • 从 0 到 1 掌握 ESP32 RMT(新手友好版)
  • 做设计什么网站可以兼职网站管理与建设总结
  • 少样本学习学习论文分享:多模态性帮助单模态性
  • 深入MySQL底层2-SQL优化与数据库运维管理
  • 设计站网页制作的公司选时代创信
  • 国外服装网站石岩做网站哪家好
  • 超越单边控制:介绍新一代对话智能体评测基准τ2-Bench
  • Scala • basis
  • vi设计公司深圳企业网站排名怎么优化
  • 深度学习视角下的图像分类技术体系总结
  • mysql数据库最新版下载,安装
  • 记2831.找出最长等值子数组 练习理解
  • 优秀网站作品下载免费广告设计模板网站
  • 住房和城乡建设部官方网站发布郑州发布会最新消息
  • 中国建站公司重庆装修公司网站建设
  • 怎样建网站域名公司建网站多少钱合适
  • 学习峰岹MOTORSIM(Day4)——电机磁铁变弱,转速反而飙升?
  • 网页搜索记录怎么删除神马seo服务
  • interface g0/0/0.1 概念及题目
  • 网站首页引导页 模版银行官网登录入口
  • 网站运营代理淘宝网站建设违规吗
  • 基于岗课赛证的中职物联网专业“综合布线课程”教学解决方案
  • 连接蓝牙时“无媒体信号”怎么办?
  • Java后端面经(八股——Redis)
  • 津做网站百度公司在哪里
  • 运用.net做网站做网站不知道做什么内容的
  • 4、除了常见的 services(业务微服务)和 gateway(API 网关)模块外,还必须建立一系列支撑性、平台级、基础设施类模块