CentOS7上实现mysql数据库主从备份

CentOS7上实现mysql主备机备份简介一、准备好两台机子,一台主机 master,一台备机 slave二、分别在主备机子上部署 mysql 环境三、初始化 mysql 原始密码四、master 上的操作五、slave 上的操作

简介

CentOs7上实现mysql数据库主从备份,包括部署 mysql 环境等

一、准备好两台机子,一台主机 master,一台备机 slave

编辑 master 以及 slave 的 /etc/sysconfig/network-scripts/ifcfg-ens33 配置好各自的 IP 地址,如果是 克隆的,则 IP 也一样,会有问题,所以需要配置好 IP
  master IP: 192.168.75.20
  slave IP: 192.168.75.21
1.在 ifcfg-ens33 最后追加两行,指定 IP 地址以及 子网掩码(示例为主机)

IPADDR=192.168.75.20
NETMASK=255.255.255.0

2.重启网络服务

service network restart

3.查看 ip 地址是否配置成功

ip a

 在 ens33 里,inet 显示配置的 IP 地址
4.相互 ping 一下,通了才行
5.主备机关闭防火墙

systemctl disable firewalld    # 开机不启动防火墙
systemctl stop firewalld # 关闭防火墙

二、分别在主备机子上部署 mysql 环境

CentOS7 里没有 Mysql,而是 MariaDB,是 Mysql 的分支,但是咱也可以用 Mysql
1./opt 下创建 /mysql57 目录,下载 mysql,在搜狐镜像上 http://mirrors.sohu.com/

wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar

2.解压 tar 包

tar xf mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar

3.安装 mysql

ll|grep .rpm
-rw-r--r-- 1 root root 531056640 Jun 12 2019 mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar
-rw-r--r-- 1 7155 31415 25365436 Jun 12 2019 mysql-community-client-5.7.27-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 281248 Jun 12 2019 mysql-community-common-5.7.27-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 3833396 Jun 12 2019 mysql-community-devel-5.7.27-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 47074656 Jun 12 2019 mysql-community-embedded-5.7.27-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 24079736 Jun 12 2019 mysql-community-embedded-compat-5.7.27-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 129991352 Jun 12 2019 mysql-community-embedded-devel-5.7.27-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 2272032 Jun 12 2019 mysql-community-libs-5.7.27-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 2116432 Jun 12 2019 mysql-community-libs-compat-5.7.27-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 173500088 Jun 12 2019 mysql-community-server-5.7.27-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 122530756 Jun 12 2019 mysql-community-test-5.7.27-1.el7.x86_64.rpm

yum install -y *.rpm    # 安装所有 .rmp

 图形界面默认安装位置:/var/lib/mysql
 非图形界面默认安装位置:/usr/share/mysql
4.新建 /mydata/mysql 目录

mkdir -p /mydata/mysql

5.给 mysql 读写权限(mysql 用户)

chown mysql -R /mydata/mysql

6.修改配置文件,路径位置 /etc/my.cnf

vim /etc/my.cnf

原配置文件:

  [mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

将头两行修改成:

    datadir=/mydata/mysql
socket=/mydata/mysql/mysql.sock

[mysqld_safe] 修改成:

    log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

新增:

    [mysql]
socket=/mydata/mysql/mysql.sock

7.关闭 selinux

setenforce 0

8.启动 mysql

systemctl start mysqld

9.查看 mysql 状态

service  mysqld  status

看到状态为 active(running),说明安装成功并成功运行了
注意,这里是 mysqld 而不是 mysql,否则会有错误提示 Unit mysql.service could not be found.
并不是 CentOS7 嫌弃 mysql,要按照 MariaDB,而是自己敲错了命令

三、初始化 mysql 原始密码

1.root 用户登录 mysql,输入密码直接回车即可

mysql -uroot -p

2.查看 mysql 日志,匹配 “pass”

cat /var/log/mysqld.log|grep pass

root@loaclhost 后面跟着的就是临时生成的密码
3.初始化密码

mysql_secure_installation

设置好密码后,y,让输密码再输一次,然后一路 y 就好

如果上面操作有误,一直显示不出临时密码,还可以这样修改,该方法同样适用于忘记密码的情况
1.修改 配置文件

vim /etc/my.cnf

[mysqld] 增加下面代码,跳过密码验证

skip-grant-tables

2.保存并退出后,重启 mysql 服务

service mysqld stop
service mysqld start

3.直接登录 mysql

mysql -uroot

4.切换到 mysql 数据库

use mysql

刷新权限,这一步一定要做!!!否则会陷入一个死循环

flush privileges;

重设密码,要看到 Query OK… 才行

set password for root@localhost = 'your_password';

退出 mysql,还原 配置文件(把 skip-grant-tables删掉),重启 mysql 服务

service mysql restart

再次登录 mysql,使用刚刚设置的密码登录

mysql -uroot -p

5.为了后续方便,修改 mysql 密码校验
密码校验策略分为 3 个等级:
0 --> 校验级别最低,只校验密码长度,长度可以设置(默认)
1 --> 密码必须包括大小写字母、数字、特殊字符
2 --> 满足以上两条的同时,对于密码中任意连续的 4 个(或以上)不能是字典中的单词

set global validate_password_policy=0;    # 修改密码校验等级为 0
set global validate_password_length=3; # 设置密码长度最短为 3

四、master 上的操作

master IP: 192.168.75.20
1.编辑配置文件

vim /etc/my.cnf

在 [mysqld] 中增加以下配置

server-id=1                         # 设置 id,这个可以是任意数字
log-bin=/mydata/log/master-bin # 启动 binlog 日志,名字必须是 log-bin
sync_binlog=1 # 确保主从复制的事务安全

2.配置好后,新建相应目录,授权,重启 mysqld 服务

mkdir -p /mydata/log
chown mysql -R /mydata/
systemctl restart mysqld

3.重启 mysqld 后查看 /mydata/log 下是否生成文件,有文件则配置 OK
4.root 登录 mysql,新建 slave 用户,并给 slave 用户授权并刷新

grant replication slave on *.* to 'slave'@'192.168.75.21' identified by '6yhn^YHN';
flush privileges;

5.查看用户是否增加成功

show grants for slave@192.168.75.21;
+-----------------------------------------------------------+
| Grants for slave@192.168.75.21 |
+-----------------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.75.21' |
+-----------------------------------------------------------+
1 row in set (0.00 sec)

6.查看有关从属服务器线程的关键参数的信息,注意,\G 不用加 ;

	show master status\G
*************************** 1. row ***************************
File: master-bin.000002
Position: 602
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)

五、slave 上的操作

slave IP: 192.168.75.21
1.编辑配置文件

vim /etc/my.cnf

在 [mysqld] 中增加以下配置

server-id=2                          # 这个 id 随便给,但不要和 master 的一样
relay-log=/mydata/log/slave-relay # 这里是 relay-log 了,名字必须是 relay-log,备份的名字也就 slave-relay
sync_binlog=1
read-only=ON # 开启只读模式,确保主备数据一致

2.创建文件夹,并授权,重启 mysql 服务,重启后 /mydata/log 下暂时没有文件

mkdir /mydata/log
chown -R mysql /mydata/
systemctl restart mysqld

3.进入数据库,准备建立连接
[准备建立连接的命令解释]

CHANGE MASTER TO
MASTER_HOST='192.168.75.20', # master IP
MASTER_USER='slave', # master 上创建专门用于备份的用户
MASTER_PASSWORD='6yhn^YHN', # 及其密码
MASTER_PORT=3306, # 从这行开始,都可以不输入,只要上面几行即可开启备份(而且最好不要设置,要不然会挖坑)
MASTER_LOG_FILE='master-bin.000002', # master 上 mysql 执行 show master status \G 查到的 File
MASTER_LOG_POS=602, # master 上 mysql 执行 show master status \G 查到的 Position
MASTER_CONNECT_RETRY=10; # 设置超时时间,超过 n 秒没连接上,则表示 master 挂了

[以下用于复制,执行命令]

CHANGE MASTER TO
MASTER_HOST='192.168.75.20',
MASTER_USER='slave',
MASTER_PASSWORD='6yhn^YHN';

4.开启 slave 连接,主备机连接成功,数据开始同步!!!

start slave;

5.查看有关从属服务器线程的关键参数的信息

	show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.75.20
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master-bin.000002
Read_Master_Log_Pos: 602
Relay_Log_File: slave-relay.000003
Relay_Log_Pos: 817
Relay_Master_Log_File: master-bin.000002
Slave_IO_Running: Yes # 这里两个 Yes,则表示连接上了
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 602
Relay_Log_Space: 1235
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: d94faa39-e098-11ea-9c51-000c29823fb8
Master_Info_File: /mydata/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)

至此,大功告成!!!

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

CentOS7上实现mysql数据库主从备份

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » CentOS7上实现mysql数据库主从备份
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏