《MySQL系列-主从相关》Windows生产服务器和Linux备份服务器实现“主从备份功能“

news2025/1/12 9:46:25

Windows生产服务器和Linux备份服务器实现"主从备份功能"

经测试,Windows服务器和Linux服务器是可以实现主从备份的。为了实现对Windows数据库的备份功能,而目前只有Linux服务器了,所以在Linux服务器上部署从库,实现主从备份。

一、MySQL从库安装

主库版本

C:\Users\admininster>mysql -V
mysql  Ver 14.14 Distrib 5.7.36, for Win64 (x86_64)

从库安装

1.准备操作

1.1下载指定版本

CSDN资源下载

在这里插入图片描述

1.2 检查是否安装

rpm -qa|grep mariadb
rpm -qa|grep -i mysql

1.3 验证MySQL安装包

# 上传到服务器上
[root@kafka01 ~]# ls | grep mysql
mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz

# md5sum验证安装包是否与官网一致
[root@kafka01 ~]# md5sum mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
1748ec2c8b5ca1bcf8ba3b1f5e956139  mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz

1.4 解压到指定目录

[root@kafka01 ~]# tar -zxvf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz -C /usr/local/

[root@kafka01 local]# mv mysql-5.7.36-linux-glibc2.12-x86_64/ mysql-5.7.36

2.MySQL相关准备

2.1 创建用户及用户组

# 1.创建MySQL的group
[root@kafka01 local]# groupadd mysql
# 2.在MySQL组下创建一个MySQL用户
[root@kafka01 local]# useradd -r -g mysql mysql

2.2 创建数据目录

[root@kafka01 local]# cd mysql-5.7.36/
[root@kafka01 mysql-5.7.36]# mkdir data
[root@kafka01 mysql-5.7.36]# chown mysql:mysql ./data/

2.3 修改my.cnf

[root@kafka01 data]# vim /etc/my.cnf

[mysqld]
port=33060
user=mysql
basedir=/usr/local/mysql-5.7.36
datadir=/usr/local/mysql-5.7.36/data/
socket=/tmp/mysql.sock
log-error=/usr/local/mysql-5.7.36/data/mysql.err
pid-file=/usr/local/mysql-5.7.36/data/mysql.pid

symbolic-links=0
lower_case_table_names=1

3. 初始化MySQL

3.1 初始化

[root@kafka01 bin]# ./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql-5.7.36/ --datadir=/usr/local/mysql-5.7.36/data/ --user=mysql --initialize

3.2 查看初始密码

root@localhost: CHAgltyCO0?>

[root@kafka01 bin]# cat /usr/local/mysql-5.7.36/data/mysql.err
......
root@localhost: CHAgltyCO0?>

3.3 复制mysql.server文件

[root@kafka01 bin]# cp /usr/local/mysql-5.7.36/support-files/mysql.server /etc/init.d/mysql

# 如果不执行这一步,会提示
[root@kafka01 bin]# service mysql start
Redirecting to /bin/systemctl start mysql.service
Failed to start mysql.service: Unit mysql.service not found.

4.启动MySQL

4.1 启动MySQL

[root@kafka01 bin]# service mysql start
Starting MySQL. SUCCESS!

4.2 登录

MySQL启动异常:error while loading shared libraries: libncurses.so.5: cannot open shared…

[root@kafka01 bin]# ./mysql -uroot -p
./mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

[root@kafka01 bin]# find / -name 'libncurses*'
/usr/lib/libncursesw.so.5.9
/usr/lib/libncurses++.so.5
/usr/lib/libncurses++.so.5.9
/usr/lib/libncurses++w.so.5
/usr/lib/libncurses++w.so.5.9
/usr/lib/libncurses.so.5
/usr/lib/libncurses.so.5.9
/usr/lib/libncursesw.so.5
/usr/lib64/libncurses.so.6
/usr/lib64/libncurses.so.6.1
/usr/lib64/libncursesw.so.6
/usr/lib64/libncursesw.so.6.1

[root@kafka01 bin]# cp /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5

4.3 修改密码

[root@kafka01 bin]# ./mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.36 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

mysql> set password='Zxy@20230306';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

5.添加系统命令

添加系统命令后,可以在系统任意地方使用mysql命令登录

[root@kafka01 mysql-5.7.36]# chmod +x /etc/init.d/mysql
[root@kafka01 mysql-5.7.36]# chkconfig --add mysql
[root@kafka01 mysql-5.7.36]# ln -s /usr/local/mysql-5.7.36/bin/mysql /usr/bin

6.远程登陆

6.1 远程授权


mysql> grant all privileges on *.* to 'root'@'%' IDENTIFIED BY 'Zxy@20230306' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

6.2 远程登陆

在这里插入图片描述

二、MySQL主从复制

1 Windows主库开启binlog

1.1 查看数据目录(Windows主库)

mysql> show variables like 'datadir';
+---------------+---------------------------------------------+
| Variable_name | Value                                       |
+---------------+---------------------------------------------+
| datadir       | C:\ProgramData\MySQL\MySQL Server 5.7\Data\ |
+---------------+---------------------------------------------+
1 row in set, 1 warning (0.00 sec)

1.2 找到my.ini配置文件位置(Windows主库)

在这里插入图片描述

1.3 修改my.ini文件开启binlog(Windows主库)

log-bin = mysql-bin
# binlog格式
binlog_format = row
server-id = 1
# 每个表都开启一个表空间
innodb_file_per_table = ON
# 禁止dns解析
skip_name_resolve = ON
# 记录以下数据库binlog
binlog-do-db=db1
binlog-do-db=db2
binlog-do-db=db3
expire_logs_days=7

1.4 重启MySQL(Windows主库)

通过命令win + r,输入services.msc即可进入到如下页面,找到MySQL服务,重启即可

在这里插入图片描述

mysql> show variables like '%log_bin%';
+---------------------------------+-------------------------------+
| Variable_name                   | Value                         |
+---------------------------------+-------------------------------+
| log_bin                         | ON                            |
| log_bin_basename                | D:\mysql\data\mysql-bin       |
| log_bin_index                   | D:\mysql\data\mysql-bin.index |
| log_bin_trust_function_creators | OFF                           |
| log_bin_use_v1_row_events       | OFF                           |
| sql_log_bin                     | ON                            |
+---------------------------------+-------------------------------+
6 rows in set, 1 warning (0.00 sec)

2 全量同步一次数据

2.1 主库添加只读锁(Windows主库)

mysql> FLUSH TABLES WITH READ LOCK;
mysql> SET GLOBAL read_only = ON;

2.2 导出主库数据(Windows主库)

导出三个需要备份库的sql文件

C:\ProgramData\MySQL\backup>mysqldump -uroot -p -h localhost --databases db1 db2 db2 > db1_db2_db3_2023-03-06.sql

将sql文件发送到目标服务器

scp db1_db2_db3_2023-03-06.sql root@112.41.113.128:/usr/local/mysql-5.7.36

2.3 从库导入数据(Linux从库)

mysql -uroot -p -h localhost < db1_db2_db3_2023-03-06.sql

3 主从配置

3.1 主库配置(Windows主库)

3.1.1 创建用户(Windows主库)

create user 'slave'@'localhost' IDENTIFIED by 'Zxy@20230306';

3.1.2 用户授权(Windows主库)

# replication slave:授予此权限,复制才能真正工作
# replication client:授予此权限,复制用户可以使用show master status,show slave status,show binary logs来确认复制状态
grant replication slave,replication client on *.* to 'slave'@'112.41.113.128' identified by 'Pd@20230306';

3.1.3 查看master信息(Windows主库)

# 通过show master status 查看MASTER_LOG_FILE,MASTER_LOG_POS等信息
mysql> show master status\G;
*************************** 1. row ***************************
             File: mysql-bin.000001
         Position: 24510
     Binlog_Do_DB: db1,db2,d3
 Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)

3.2 从库配置(Linux从库)

3.2.1 开启中继日志(Linux从库)

[root@kafka01 ~]# mysql --help | grep my.cnf
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
[root@kafka01 ~]# vim /etc/my.cnf
relay-log = relay-log
relay-log-index = relay-log.index
server-id = 2
innodb_file_per_table = ON
skip_name_resolve = ON

replicate_do_db = db1
replicate_do_db = db2
replicate_do_db = db3

master_info_repository  = table
relay_log_info_repository = table
#如果主从数据库名称相同
replication-do-db=数据库名
#如果主从数据库名称不同
replication-rewrite-db= 主数据库名 -> 从数据库名

3.2.2 重启从库(Linux从库)

[root@kafka01 ~]# service mysql restart

mysql> show variables like '%relay_log%';
+---------------------------+----------------------------------------------+
| Variable_name             | Value                                        |
+---------------------------+----------------------------------------------+
| max_relay_log_size        | 0                                            |
| relay_log                 | relay-log                                    |
| relay_log_basename        | /usr/local/mysql-5.7.36/data/relay-log       |
| relay_log_index           | /usr/local/mysql-5.7.36/data/relay-log.index |
| relay_log_info_file       | relay-log.info                               |
| relay_log_info_repository | TABLE                                        |
| relay_log_purge           | ON                                           |
| relay_log_recovery        | OFF                                          |
| relay_log_space_limit     | 0                                            |
| sync_relay_log            | 10000                                        |
| sync_relay_log_info       | 10000                                        |
+---------------------------+----------------------------------------------+
11 rows in set (0.00 sec)

3.2.3 设置master(Linux从库)

mysql> CHANGE MASTER TO MASTER_HOST='115.32.112.284' ,MASTER_PORT=3306,MASTER_USER='slave',MASTER_PASSWORD='Zxy@20230306',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=24510 for channel 'master_report';

4、启动主从

4.1 启动从库(Linux从库)

mysql> start slave

4.2 检查从库状态(Linux从库)

# 1.通过show slave status主要查看以下两个参数状态是否为Yes
mysql> show slave status\G;

Slave_IO_Running: Yes/No
Slave_SQL_Running: Yes/No

# 2.如果以上两个参数为No,可以检查如下两个参数提示信息,并处理
Last_IO_Error:
Slave_SQL_Running_State:

4.3 关闭主库只读(Windows主库)

mysql> SET GLOBAL read_only = OFF;
mysql> UNLOCK TABLES;

5、查看主从连接

可以看到左侧从库的Read_master_Log_Pos和右侧master的Position是一致的
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/402911.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[算法]计数排序和基数排序

参考&#xff1a;《漫画算法-小灰的算法之旅》 目录 一、计数排序 1、计数排序的过程 2、计数排序的局限性 3、计数排序代码 二、基数排序 1、基数排序思想 2、例子 3、解决对齐问题 4、基数排序代码 三、两者的时间复杂度和空间复杂度 一、计数排序 1、计数排序的过…

Windows环境下实现设计模式——观察者模式(JAVA版)

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天总结一下Windows环境下如何编程实现观察者模式&#xff08;设计模式&#xff09;。不知道大家有没有这样的感觉&#xff0c;看了一大堆编程和设计模式的书&#xff0c;却还是很难理解设计模式&#xff0c…

【python实操】用python写软件弹窗

文章目录前言组件label 与 多行文本复选框组件Radiobutton单选组件Frame框架组件labelframe标签框架列表框Listboxscrollbar滚动条组件scale刻度条组件spinbox组件Toplevel子窗体组件PanedWindow组件Menu下拉菜单弹出菜单总结针对组件前言 python学习之路任重而道远&#xff0…

P6入门:创建项目计划工作分解结构WBS

目录 引言 Primavera P6 中的自顶向下方法 工作分解结构

LeetCode:1590. 使数组和能被 P 整除

记录一下今天遇到的每日一题&#xff0c;很绕&#xff0c;还需要考虑很多细节 思路 遍历数组&#xff0c;找出数组除余p之后余下的数字k&#xff0c;需要寻找的子数组也需要满足除余p之后余k。 找出所有满足的子数组&#xff0c;求出最短长度。 具体求子数组&#xff0c;求出…

CI/CD | 不可忽略的Jenkins基础架构修复问题

在系列文章第一篇和第二篇中&#xff0c;大家已经看到了在CloudBees的帮助下&#xff0c;让管理Jenkins解决方案从一个大麻烦变成轻而易举就能解决的事情。但是&#xff0c;现在让我们反思并退一步。有时候&#xff0c;这些问题并不是表面上的——它们是在成长的过程中造成的&a…

yyds,Elasticsearch Template自动化管理新索引创建

文章目录一、什么是Elasticsearch Template&#xff1f;二、Elasticsearch Template的用法2.1、创建模板2.2、验证模板2.3、应用模板2.4、删除模板2.5、组合模板2.6、如何在同一个模板中定义多种匹配模式2.7、模板优先级2.8、提前模拟索引的最终映射三、Elasticsearch Template…

Python多线程详解

文章目录1. 多线程2. 创建线程2.1 直接创建2.2 继承创建3. 守护线程4. 阻塞线程5. 线程锁5.1 互斥锁(Lock)5.2 递归锁(RLock)5.3 信号量(Semaphore)5.4 事件(Event)6. ThreadLocal7. 线程池7.1 基本使用7.2 as_completed 方法7.3 wait方法7.4 map方法8. Python线程真相参考文章…

linux时间的特殊用法

今天介绍linux下Date时间命令相关的特殊用法 date (当前的时间) 修改系统当前时间&#xff1a; date -s "2022-6-20 9:33:50" 昨天的时间是我们比较常用的&#xff1a; date -d "yesterday" %Y%m%d ( 昨天的时间) date -d "1 day ago" %Y%m%d …

如何写一个简单的爬虫

学习爬虫重要的是知识储备以及实战能力&#xff0c;最近有个学妹要求我帮她写一个爬虫程序&#xff0c;我将我编写的爬虫代码以及解释都记录下来&#xff0c;方便后期更多的伙伴们学习参考。 前置知识-爬虫定义 爬虫指的是一种自动化程序&#xff0c;用于在互联网上获取和抓取…

VB6换个思路解决微信下载文件只读的问题(含源码)

日期&#xff1a;2023年3月10日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…

Android Framework——zygote 启动 SystemServer

概述 在Android系统中&#xff0c;所有的应用程序进程以及系统服务进程SystemServer都是由Zygote进程孕育&#xff08;fork&#xff09;出来的&#xff0c;这也许就是为什么要把它称为Zygote&#xff08;受精卵&#xff09;的原因吧。由于Zygote进程在Android系统中有着如此重…

docker使用教程(装linux比虚拟机方便)

目录 一、介绍 二、使用 1.下载操作系统 2.查看docker内的容器有哪些 3. 运行指定容器 4.进入容器 ​1.attach进入容器&#xff08;输入容器ID前4位&#xff09; 2.exec进入容器&#xff08;可以输入ID或者NAMES&#xff09; 5.退出容器 6.在宿主机器和容器之间拷贝文…

时间同步Chrony

时间同步chrony一、Chrony时间服务1、Chrony介绍2、Chrony优点二、配置Chrony服务三、验证一、Chrony时间服务 1、Chrony介绍 chrony 是基于NPT协议的实现时间同步服务&#xff0c;它既可以当做服务端&#xff0c;也可以充当客户端。chrony是ntp的代替品&#xff0c;能更精确…

数据传输服务DTS(阿里巴巴)

数据传输服务DTS(阿里巴巴) 什么是数据传输服务DTS 数据传输服务DTS&#xff08;Data Transmission Service&#xff09;是阿里云提供的实时数据流服务&#xff0c;支持关系型数据库&#xff08;RDBMS&#xff09;、非关系型的数据库&#xff08;NoSQL&#xff09;、数据多维分…

CentOS 7 使用 Composer 配置 phpmyadmin 并管理多个mysql

phpMyAdmin 中文文档 准备工作 CentOS 7 yum 方式安装 phpCentOS 7 安装 Apache HTTP Server安装Composer 安装 phpMyAdmin 按照官方文档 用Composer安装 要安装phpMyAdmin&#xff0c;只需运行&#xff1a; composer create-project phpmyadmin/phpmyadmin 建立网站配置文…

skywalking部暑(zookeeper、kafka、elasticsearch)

服务器IP部暑角色192.168.11.100zookeeper kafka elasticsearch 一、docker部暑 。。。 二、.安装Zookeeper path/data/zookeeper mkdir -p ${path}/{data,conf,log} chown -R 1000.1000 ${path}echo "0" > ${path}/data/myid #zookeeper配置文件 cat > ${p…

Gitee初练 --- 问题合集(一)

Gitee一、Windows找不到gpedit.msc请确定文件名是否正确的提示二、windows 10 凭据无法保存三、解决 git pull/push 每次都要输入用户名密码的问题一、Windows找不到gpedit.msc请确定文件名是否正确的提示 就随便在一个地方建立一个文本文件&#xff0c;将一下内容复制进去 e…

从0-1超详细教你使用nginx打包部署静态资源,以及hash和history配置汇总

首先呢&#xff0c;我们要有以下几个方面的知识和操作&#xff0c;来实现项目部署 第一&#xff1a;我们要搭建nginx部署基础环境 具体流程可参考这个链接从0-1超详细教你实现前端代码nginx部署全流程 第二&#xff1a;我们要知道前端路由hash和history实现以及区别 路由功…

Reactor响应式流的核心机制——背压机制

响应式流是什么&#xff1f; 响应式流旨在为无阻塞异步流处理提供一个标准。它旨在解决处理元素流的问题——如何将元素流从发布者传递到订阅者&#xff0c;而不需要发布者阻塞&#xff0c;或订阅者有无限制的缓冲区或丢弃。 响应式流模型存在两种基本的实现机制。一种就是传统…