资讯专栏INFORMATION COLUMN

LNMP+HAProxy+Keepalived负载均衡(四)- MySQL双机互备及自动备份

pingink / 2547人阅读

摘要:前三篇已实现了最基本的负载均衡,但是还存在问题,如两个数据库不同步,上传的附件不同步,数据库没有制定备份计划,负载均衡参数还有待优化等问题。这里先把双机互备和自动备份的内容补齐。

前三篇已实现了最基本的负载均衡,但是还存在问题,如两个数据库不同步,上传的附件不同步,数据库没有制定备份计划,负载均衡参数还有待优化等问题。这里先把双机互备和自动备份的内容补齐。

配置MySQL数据库的账户密码(以下命令仅用参考,这里的目的是要有一个可供内网其他服务器访问本机数据库的账户);

# 停止数据库服务
service mysql stop
# 免验证启动数据库服务
mysqld --user=mysql --skip-grant-tables --skip-networking
# 登录mysql
mysql -u root mysql
# 修改用户密码的几种方式
mysql> UPDATE user SET authentication_string=PASSWORD("dbpwd") where USER="dbadmin";
mysql> UPDATE user SET authentication_string=PASSWORD("dbpwd") where USER="dbbaker";
mysql> UPDATE user SET Password=PASSWORD("dbpwd") where USER="dbadmin";
mysql> alter user user() identified by "dbpwd";
# 使配置生效
mysql> FLUSH PRIVILEGES;
mysql> quit;

# 重启mysql服务,注意,这里的mysql如果找不到服务,可以尝试mysqld,再不行就通过ps -ef | grep mysql找到进程ID(pid),然后通过kill -9 pid停止服务;
service mysql restart
mysql -udbadmin -p
# Enter password: <输入新密码newpassword>
# 创建用户并配置权限:
mysql> GRANT ALL ON *.* TO "dbadmin"@"%" IDENTIFIED BY "dbpwd" WITH GRANT OPTION;
# 移除权限
# REVOKE ALL ON *.* TO "dbadmin"@"%";
FLUSH PRIVILEGES;
# 全局层级:*.*
# 数据库层级:db_name.*
# 表层级:db_name.tbl_name
# ALL是指分配所有权限,具体权限可以通过下面的查询语句查看

# 查询用户权限
select * from mysql.user G;
# 删除用户
# delete from mysql.user where Host <> "%";
# 至此,数据库可以通过以上账户进行远程连接了。

配置MySQL的双机互备 - 主数据库服务器(192.168.6.200 /etc/my.cnf的配置请参考LNMP+HAProxy+Keepalived负载均衡(三)- 配置文件汇总);

# 在主数据库服务器上执行配置:
vim /etc/my.cnf

# 修改配置内容:
server-id=6                           # 数据库集群中唯一
lower_case_table_names=1              # 新增行,数据表不区分大小写
replicate_wild_do_table=sync_db_name.%   # 只同步“sync_db_name”库下的表
log-slave-updates=YES                # 从服务器同步后记录日志

# 保存配置后重启MySQL服务:
service mysql restart
# 进入MySQL命令行,查看主数据库状态信息,其中的“File”和“Position”值后面会用到:
mysql> use sync_db_name;
mysql> show master status;

配置MySQL的双机互备 - 备数据库服务器(192.168.6.210);

# 停止slave:
mysql> stop slave;

# 进入MySQL命令行,配置要同步的主库来源:
mysql> CHANGE MASTER TO MASTER_HOST="192.168.6.200",MASTER_PORT=10002,MASTER_USER="dbadmin",MASTER_PASSWORD="dbpwd",MASTER_LOG_FILE="mysql-bin.000016",MASTER_LOG_POS=1285;
# MASTER_HOST:主数据库的IP;
# MASTER_PORT:主数据库的端口(int),默认3306;
# MASTER_USER,MASTER_PASSWORD:主数据库账户、密码;
# MASTER_LOG_FILE:主数据库中查询到的“File”值;
# MASTER_LOG_POS:主数据库中查询到的“Position”值;

# 启动slave:
mysql> start slave;

# 检查slave:
mysql> show slave status G;

# 命令行汇总:
show master status;
stop slave;

Slave_IO_Running、Slave_SQL_Running 均显示为 Yes 说明主备同步服务正常运行,如下图:

同步数据库的初始状态;
在启动同步服务前,还需要手动同步下数据库的初始状态,之后可以通过修改其中主数据库中的表来查看从数据库是否同步变更;

# 锁定要同步的数据库(192.168.6.200):
msyql> use sync_db_name;
msyql> flush tables with read lock;
# 将要同步的数据库导出脚本:
mysqldump -udbadmin -pdbpwd sync_db_name >/home/backup/sync_db_name.sql
# 解锁前面锁定的数据库:
msyql> unlock tables;

# 将上方备份的sql拷贝到从数据库服务器(192.168.6.210),然后创建同名数据库,恢复数据:
msyql> create database sync_db_name;
msyql> use sync_db_name;
msyql> source /home/backup/sync_db_name.sql;

做双机互备或多机循环互备;
然后将主从数据库服务器反转(即将192.168.6.200和192.168.6.210的主备身份调换),然后再配置一次同步即可。即192.168.6.200变更会同步到192.168.6.210,反之亦然。简单讲就是:
双机互备:A主B从 + A从B主;
多机循环互备:A主B从 + B主C从 + C主N从 + N主A从(建议不要过多,尤其是数据库数据量大,且变更频繁的情况下,同步毕竟也是有延迟的);

数据库的自动备份(前三步前面的文章都有提到);

安装计划工具;

yum -y install crontabs

编辑MySQL的配置文件;

vim /etc/my.cnf

# 添加配置文件内容:
[mysqldump]
# 用于备份数据库
user=dbbaker
password=dbpwd

重启数据库服务;

service mysql restart & service mysql status

准备备份脚本;

mkdir -p /home/bakup/lgd_system

# 编辑bakdb.sh的内容:
echo "mysqldump sync_db_name | gzip > /home/backup/lgd_system/sync_db_name_$(date +%Y%m%d_%H%M%S).sql.gz" > /home/bakup/bakdb.sh
chmod +x /home/bakcup/bakdb.sh

# 解压缩指定的备份文件:
gunzip sync_db_name_*.gz

添加备份计划;

# 方式一:
crontab -e
# 方式二:
vim /etc/crontab
  
# 编辑计划:
# Example of job definition:
# .---------------- minute (0 - 59) *表示每分钟
# |  .------------- hour (0 - 23) *表示每小时
# |  |  .---------- day of month (1 - 31) *表示每天
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ... *表示每月
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat *表示每天
# |  |  |  |  |
# *  *  *  *  * user-name(用户名)  command to be executed(脚本路径)
# 30 10 * * * /home/backup/bakdb.sh # 表示每天10:30执行一次备份脚本(前方的注释去掉即可)

计划任务常用操作命令;

service crond start     # 启动服务
service crond stop      # 关闭服务
service crond restart   # 重启服务
service crond reload    # 重新载入配置
service crond status    # 查看服务状态
tail -f /var/log/cron   # 查看执行日志

备份文件解压缩

gzip命令:
选项参数:
-c:将压缩后的数据显示到屏幕上,可以用于重定向;
-d:解压缩的参数;
-t:检验压缩的一致性,看是否有错误;
-v:显示 源文件大小/压缩文件大小 的压缩比;
-#:# 为数字的意思,代表压缩等級,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6
gzip -v  => 压缩文件,-v查看压缩比
gzip -d 
gunzip file.gz

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/48411.html

相关文章

  • LNMP+HAProxy+Keepalived负载均衡)- MySQL双机备及自动备份

    摘要:前三篇已实现了最基本的负载均衡,但是还存在问题,如两个数据库不同步,上传的附件不同步,数据库没有制定备份计划,负载均衡参数还有待优化等问题。这里先把双机互备和自动备份的内容补齐。 前三篇已实现了最基本的负载均衡,但是还存在问题,如两个数据库不同步,上传的附件不同步,数据库没有制定备份计划,负载均衡参数还有待优化等问题。这里先把双机互备和自动备份的内容补齐。 配置MySQL数据库的账...

    Alliot 评论0 收藏0
  • 【新手向】Linux服务器集群系统各概念辨析

    摘要:负载均衡着重在于提供服务并发处理能力的集群。向外拓展增加新的服务器。用户的请求其实已经到了重定向负载均衡服务器,服务器根据算法要求用户重定向,用户收到重定向请求后,再次请求真正的集群优点简单。 集群,冗余,负载均衡集群,负载均衡,主从复制,读写分离,分布式,分布式计算,分布式计算平台,并行计算......刚刚踏入服务器架构的菜鸟们往往会被这些概念弄的不知所云,一脸懵逼。那么今天就来谈谈...

    Object 评论0 收藏0
  • LNMP+HAProxy+Keepalived负载均衡(三)- 配置文件汇总

    摘要:的操作命令将端口由修改为,修改内容如下具体配置可参考下面的配置文件重启,并查看其状态的配置文件服务器需要修改的配置,仅用参考端口根据自己的情况修改站点根目录可以加载自己的配置文件,这里我把配置文件中的内容直接替换了原本的节 Nginx的操作命令 vim /usr/local/nginx/conf/nginx.conf # 将端口由80修改为10001,修改内容如下: listen ...

    894974231 评论0 收藏0
  • LNMP+HAProxy+Keepalived负载均衡(三)- 配置文件汇总

    摘要:的操作命令将端口由修改为,修改内容如下具体配置可参考下面的配置文件重启,并查看其状态的配置文件服务器需要修改的配置,仅用参考端口根据自己的情况修改站点根目录可以加载自己的配置文件,这里我把配置文件中的内容直接替换了原本的节 Nginx的操作命令 vim /usr/local/nginx/conf/nginx.conf # 将端口由80修改为10001,修改内容如下: listen ...

    leanxi 评论0 收藏0
  • LNMP+HAProxy+Keepalived负载均衡(二)- 基础服务准备

    摘要:日志服务修改日志服务配置并重启日志服务编辑系统日志配置,指定包含的配置文件路径和规则为创建一个独立的配置文件编辑配置文件的内容如下取消注释取消注释与中的配置对应如果不加,则除了在中写入日志外,也会写入文件配置的主配置文件,开启远程日志修改配 日志服务 修改日志服务配置并重启日志服务; vim /etc/rsyslog.conf 编辑系统日志配置,指定包含的配置文件路径和规则: ...

    zhangke3016 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<