mysql网站程序以及数据库实时备份方案
时间:2015-02-25 01:02 来源:linux.it.net.cn 作者:IT
Mysql1和mysql2都配置lamp环境,这边就不在叙述,网站默认路径 /var/www/html/
一:在mysql1上的安装配置(网站程序在mysql1)
1.首先下载并且安装inotify,rsync
Inotify的安装
[root@mysql1 ~]# tar zxvf inotify-tools-3.14.tar.gz
[root@mysql1 ~]# cd inotify-tools-3.14
[root@mysql1 inotify-tools-3.14]# ./configure
[root@mysql1 inotify-tools-3.14]# make
[root@mysql1 inotify-tools-3.14]# make install Rsync的安装
[root@mysql1 ~]# tar zxvf rsync-3.0.8.tar.gz
[root@mysql1 ~]# cd rsync-3.0.8
[root@mysql1 rsync-3.0.8]# ./configure
[root@mysql1 rsync-3.0.8]# make
[root@mysql1 rsync-3.0.8]# make install 2.配置ssh认证,目的是为了实时同步的时候不需要输入密码,在服务器端执行ssh-kengen命令生成公钥
然后在mysql2(192.168.2.3)上建立.ssh目录
[root@mysql2 ~]# mkdir /root/.ssh 并回到mysql1(192.168.2.2)上拷贝公钥到客户端并重命名为authorized_keys
配置实时同步的脚本,我的脚本路径放到了网站根目录下,为了以后备份方便
[root@mysql1 html]# vi rsync.sh
#!/bin/sh
src=/var/www/html/
des=/var/www/html/
ip=192.168.2.3
inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T %w%f' -e modify,delete,create,attrib ${src} | while read
file
do
for i in $ip
do
/usr/local/bin/rsync -aP --delete $src root@$ip:$des
done
done
[root@mysql1 html]# chmod 755 rsync.sh 在服务端修改,创建文件,相当于一个动作会触发inotify,如果没有动作,默认是不同步。
测试,在后台运行rsync.sh
[root@mysql1 html]# ./rsync.sh &
[1] 8868 然后创建一个文件
[root@mysql1 html]# mkdir ceshi 可以看到网站目录以及新创建的ceshi目录全部开始同步
现在我们在192.168.2.3上验证
然后在192.168.2.2上删除ceshi这个目录
192.168.2.3上则同步成功
二.配置mysql主从
mysql1为主配置如下
修改mysql配置文件添加
[root@mysql1 html]# vi /etc/my.cnf
server-id=1
log-bin=mysql-bin 然后重启mysql服务让修改的配置生效
[root@mysql1 html]# service mysqld restart 登录mysql,在mysql中添加一个backup的账号,并授权给从服务器
[root@mysql1 html]# mysql -uroot -p
Enter password:
mysql> grant replication slave on *.* to 'backup'@'192.168.2.3' identified by 'backup';
Query OK, 0 rows affected (0.02 sec) 3)、查询主数据库状态,并记住FILE及Position的值,
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 106 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec) 在从服务器的配置(192.168.2.3)
[root@mysql2 html]# vi /etc/my.cnf
server-id=2
log-bin=mysql-bin 然后重启mysql服务让修改的配置生效
[root@mysql2 html]# service mysqld restart
[root@mysql2 html]# mysql -uroot -p
Enter password:
mysql>slave stop;
mysql>change master to
master_host='192.168.2.2',master_user='backup',master_password='backup',master_log_file='mysql
bin.000001',master_log_pos=106;
mysql>slave start; 检查主从同步,如果您看到Slave_IO_Running和Slave_SQL_Running均为Yes,则主从复制连接正常
mysql> show slave status\G
验证配置是否正常,mysql主从能否正常复制
在主数据库上新建一个linuxpub_phpbb库,并且在库中导入数据库文件
[root@mysql1 html]# mysql -uroot -p
mysql> create database linuxpub_phpbb;
Query OK, 1 row affected (0.05 sec)
mysql> use linuxpub_phpbb;
Database changed
mysql> source /root/1.sql
Query OK, 0 rows affected (0.03 sec) 查看数据库是否存在
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| linuxpub_phpbb |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
在从数据库上验证
[root@mysql2 html]# mysql -uroot -p
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| linuxpub_phpbb |
| mysql |
| test |
+--------------------+
4 rows in set (0.10 sec) 数据库同步成功
这时配置完成,如果mysql1服务器挂掉,只需要把域名解析到mysql2上即可。然后我们就有时间来恢复mysql1了并不
误网站的运行。同步数据使用内网ip既节省了托管带宽费用又提高了数据安全性和传输速率
(责任编辑:IT)
Mysql1和mysql2都配置lamp环境,这边就不在叙述,网站默认路径 /var/www/html/ 一:在mysql1上的安装配置(网站程序在mysql1) 1.首先下载并且安装inotify,rsync
Inotify的安装
然后在mysql2(192.168.2.3)上建立.ssh目录
配置实时同步的脚本,我的脚本路径放到了网站根目录下,为了以后备份方便
测试,在后台运行rsync.sh
现在我们在192.168.2.3上验证
然后在192.168.2.2上删除ceshi这个目录
192.168.2.3上则同步成功
二.配置mysql主从 mysql1为主配置如下
修改mysql配置文件添加 验证配置是否正常,mysql主从能否正常复制
在主数据库上新建一个linuxpub_phpbb库,并且在库中导入数据库文件
在从数据库上验证 这时配置完成,如果mysql1服务器挂掉,只需要把域名解析到mysql2上即可。然后我们就有时间来恢复mysql1了并不 误网站的运行。同步数据使用内网ip既节省了托管带宽费用又提高了数据安全性和传输速率 |