欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql 容灾备份

程序员文章站 2022-04-09 19:46:14
跨服务器备份: 服务器A:192.168.5.193 测试数据库TestDB 服务器B:192.168.5.194 目标:将服务器A上的测试数据库定时备份到服务器B中 需要技术: mysqldump + crontab 步骤: 1. 修改mysql远程连接访问权限 修改mysql的配置文件/mysq ......

跨服务器备份:

服务器a:192.168.5.193
测试数据库testdb
服务器b:192.168.5.194
目标:将服务器a上的测试数据库定时备份到服务器b中

需要技术:mysqldump + crontab

步骤:
1.修改mysql远程连接访问权限
修改mysql的配置文件/mysql/my.conf,将bind-address后面增加远程访问ip地址或者禁掉这句话就可以让远程机登陆访问了。

2.增加服务器授权用户
在服务器a上:

create user 'username'@'host' identified by 'password';

说明:

  1. username:你将创建的用户名
  2. host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
  3. password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
grant privileges on databasename.tablename to 'username'@'host'

说明:

  1. privileges:用户的操作权限,如select,insert,update等,如果要授予所的权限则使用all
  2. databasename:数据库名
  3. tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*

本测试实例mysql语句为:

create user 'why'@'192.168.5.194' identified by '123456';
grant privileges on *.* to 'why'@'192.168.5.194';
flush privileges;    /*刷新一下权限*/

这样就建立了如下的用户权限表,在服务器端查看一下,命令为:

select user,host from mysql.user;

mysql 容灾备份

3.在服务器b上编写如下脚本

#!/bin/bash
my_user=why                                            #服务器b的用户(必须是已经授权的)
my_pass=123456                                      #服务器a的用户密码
my_host=192.168.5.193                            #要连接的服务器a
my_db1=testdb                                        #想要导出的服务器a的数据库(需要授权)
mm_dir=/home/fabric/backup/t2.sql           #导出的地址
mysqldump_cmd=/usr/bin/mysqldump       #mysqldump的可运行指令地址

local_usr=root                                            #本地数据库的用户名
local_pass=000000                                    #本地数据库的密码
mysql_cmd=/usr/bin/mysql                        #mysql的可运行指令地址

$mysqldump_cmd -h $my_host -u $my_user -p$my_pass $my_db1 > $mm_dir
$mysql_cmd -u $local_usr -p$local_pass $my_db1 < $mm_dir

在命令行下进行测试,看看是否能够备份。
查看服务器a上的数据,这里的图形化工具是mysql workbench(使用起来还不错)
mysql 容灾备份
mysql 容灾备份
运行如上脚本后,查看服务器b的数据。
mysql 容灾备份
mysql 容灾备份
/可以看到这里备份成功了/

  1. 使用crontab进行定时备份
    crontab -e后
1 * * * * ~/backupdatabases.sh

以上命令使得,每小时的第一分钟,对数据库进行备份,当然也可以随意修改一些时间。