标题:
[原创]mysql在线备份(搞linux网络的请收藏吧,有良心的跟帖子)
[打印本页]
作者:
woshihaike
时间:
2005-12-23 09:48
标题:
[原创]mysql在线备份(搞linux网络的请收藏吧,有良心的跟帖子)
LBHIDDEN[0]LBHIDDEN[这个贴子最后由woshihaike在 2005/12/23 09:51am 第 1 次编辑]
[watermark] 现在有个问题,要求mysql 数据库 每四小时备份一次,mysql不能停 ,停了客户就会打电话来,老板知道了你就准备XX吧。怎么办?
mysql数据库咋备份哪,大家都会说dump,可数据量一大的话,mysqldump会出问题的。
下面是解决方案。。。
mysql replication
MYSQL4.1 双向数据同步
技术整合说明书
一、配置主master(192.168.0.2)数据库如下:
DOWLOAD mysql-4.1.15.tar.gz源码包,在192.168.0.2(master机器)手动编译安装
注:MASTER 服务器同时担任SLAVE 服务器功能因为需要双向同步
[root@localhost mysql-4.1.15]# tar –xzvf mysql-4.1.15.tar.gz
[root@localhost mysql-4.1.15]# cd mysql-4.1.15
[root@localhost mysql-4.1.15]#./configure –prefix=/usr/macro/mysql --with-charset=’gbk’
[root@localhost mysql-4.1.15]#make
[root@localhost mysql-4.1.15]#make install
[root@localhost mysql-4.1.15]#cp support-file/my-medium.cnf /etc/my.cnf
[root@localhost mysql-4.1.15]#cd ../mysql
[root@localhost mysql-4.1.15]#bin/mysql_install_db --user=mysql (注:如果在所有配置都完成后,双向同步不能成功,则问题有可能出在这一行命令,那么就重新编译安装mysql,然后到此步骤后,执行如下命令:
[root@localhost mysql-4.1.15]#bin/mysql_install_db --user=mysql --log-bin
[root@localhost mysql-4.1.15]# bin/mysql_install_db --user=mysql )
[root@localhost mysql-4.1.15]#chown –R root . (root 后边有个点意思是所有的文件)
[root@localhost mysql-4.1.15]#chwon –R mysql var/
[root@localhost mysql-4.1.15]#chgrh –R .
[root@localhost mysql-4.1.15]#bin/mysqld_safe –user=mysql &
[root@localhost mysql-4.1.15]#bin/mysql
mysql>grant all privileges on *.* to passpod@192.168.0.3 identified by ‘1234’;
mysql>exit
2.配置/etc/my.cnf
[root@localhost mysql-4.1.15]#vi /etc/my.cnf
加入如下代码:
log-bin
server-id = 1
sql-bin-update-same
binlog-do-db=passpod
master-host=192.168.0.3
master-user=passpod
master-password=';1234';
master-port=3306
master-connect-retry=30
replicate-do-db=passpod
log-slave-updates
编辑完my.cnf 后保存退出,之后执行如下命令:
[root@localhost mysql-4.1.15]#bin/mysqladmin shutdown
二、配置副SLAVE(192.168.0.3)数据库如下:
注意:这台机器首先是SLAVE服务器也同时担任MASTER服务器
1、DOWLOAD mysql-4.1.15.tar.gz源码包,在192.168.0.3(SLAVE机器)手动编译安装
[root@localhost mysql-4.1.15]# tar –xzvf mysql-4.1.15.tar.gz
[root@localhost mysql-4.1.15]# cd mysql-4.1.15
[root@localhost mysql-4.1.15]#./configure –prefix=/usr/macro/mysql --with-charrset=’gbk’
[root@localhost mysql-4.1.15]#make
[root@localhost mysql-4.1.15]#make install
[root@localhost mysql-4.1.15]#cp support-file/my-medium.cnf /etc/my.cnf
[root@localhost mysql-4.1.15]#cd ../mysql
[root@localhost mysql-4.1.15]#bin/mysql_install_db --user=mysql --log-bin
[root@localhost mysql-4.1.15]#chown –R root . (root 后边有个点意思是所有的文件)
[root@localhost mysql-4.1.15]#chwon –R mysql var/
[root@localhost mysql-4.1.15]#chgrh –R .
[root@localhost mysql-4.1.15]#bin/mysqld_safe –user=mysql &
[root@localhost mysql-4.1.15]#bin/mysql
mysql>grant all privileges on *.* to passpod@192.168.0.3 identified by ‘1234’;
mysql>exit
2.配置/etc/my.cnf
log-bin
server-id = 2
binlog-do-db=passpod
sql-bin-update-same
master-host=192.168.0.2
master-user=passpod
master-password=';1234';
master-port=3306
master-connect-retry=30
replicate-do-db=passpod
log-slave-updates
#
编辑完my.cnf 后保存退出,之后执行如下命令:
[root@localhost mysql-4.1.15]#bin/mysqladmin shutdown
三、测试mysql数据库双向同步:
重新启动两台mysql数据库
在两台mysql服务器上执行如下步骤查看配置:
mysql> show master status;
如果配置正确会有内容如下:
+----------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------+----------+--------------+------------------+
| sla-bin.000005 | 221 | passpod | |
+----------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql>show slave status;
+----------------------------------+---------------+-------------+-------------+---------------+----------------------+---------------------+----------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+
| Slave_IO_State | Master_Host | Master_User | Master_Port | Connect_Retry | Master_Log_File | Read_Master_Log_Pos | Relay_Log_File | Relay_Log_Pos | Relay_Master_Log_File | Slave_IO_Running | Slave_SQL_Running | Replicate_Do_DB | Replicate_Ignore_DB | Replicate_Do_Table | Replicate_Ignore_Table | Replicate_Wild_Do_Table | Replicate_Wild_Ignore_Table | Last_Errno | Last_Error | Skip_Counter | Exec_Master_Log_Pos | Relay_Log_Space | Until_Condition | Until_Log_File | Until_Log_Pos | Master_SSL_Allowed | Master_SSL_CA_File | Master_SSL_CA_Path | Master_SSL_Cert | Master_SSL_Cipher | Master_SSL_Key | Seconds_Behind_Master |
+----------------------------------+---------------+-------------+-------------+---------------+----------------------+---------------------+----------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+
| Waiting for master to send event | 192.168.0.2 | passpod | 3306 | 30 | localhost-bin.000012 | 221 | sla-relay-bin.000007 | 366 | localhost-bin.000012 | Yes | Yes | passpod | | | | | | 0 | | 0 | 221 | 366 | None | | 0 | No | | | | | | 0 |
+----------------------------------+---------------+-------------+-------------+---------------+----------------------+---------------------+----------------------+---------------+-----------------------+------------------+-------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+
1 row in set (0.00 sec)
3、在配置文件/etc/my.cnf中要同步的数据库是passpod,所以新建mysql服务器没有passpod数据库,执行如下命令建立passpod数据库(注:由于已经配置为双向数据库同步,所以在任何一台MYSQL服务器上执行如下命令都可以在另一台机器上都能同步:)
以192.168.0.2服务器为例:
mysql> create database passpod:
当你在登陆到192.168.0.3服务器的时候就可以看到passpod数据库了。同理当你在服务器192.168.0.3上建立数据库passpod的时候在192.168.0.2
上就可以同步了。同时也可以建立table测试。
数据库MASTER à SLAVE配置如下:
MYSQL的master/slave数据同步配置
mysql数据同步备份
A服务器: 192.168.0.2 主服务器master
B服务器: 192.168.0.3 副服务器slave
A服务器设置
安装编译过程同上一样(省略安装步骤)
#mysql –u root –p
mysql>GRANT ALL PRIVILEGES ON *.* TO backup@192.168.0.3 IDENTIFIED BY ‘1234’;
mysql>\exit
上面是Master开放一个账号backup密码1234给IP:192.168.0.3有档案处理的权限
mysqladmin –u root –p shutdown
(备份Master所有数据库..通常都用tar指令.
#tar –cvf /tmp/mysql.tar /var/lib/mysql
注意:tar的时候,MySQL是要在stop情况下 )
注:括号内的方法为MYSQL服务器不都是新安装的情况下实现的方法,即两边的服务器中数据库都不相同,而且数据和表都不相同的情况下的实施步骤,我们的是分别在两边新安装的MYSQL服务器,所以不需要这个步骤。
在A机器上修改/etc/my.cnf
在[mysqld]区段内加入参数
log-bin
server-id=1
sql-bin-update-same
binlog-do-db=passpod
重启A服务器mysql
此时因为有加入log-bin参数,因此开始有index产生了,在/var/lib/mysql目录下有.index档案纪录数据库的异动log.
B服务器设置
设定/etc/my.cnf
在[mysqld]区段加入
master-host=192.168.0.2
master-user=root
master-password=';';
master-port=3306
server-id=2
master-connect-retry=60 预设重试间隔60秒
replicate-do-db=passpod 告诉slave只做passpod数据库的更新
log-slave-updates
(将A上的mysql.tar copy到B上
用ftp传B的/tmp
9.解压缩
#cd /var/lib/ )
括号中为匹配以上括号的情况下执行的,所以这部就不需要了
状况测试
1.A跟B网络及服务都正常情况下,由A端变化数据后,到B端浏览数据,检视是否有进行replication?!
2.模拟B当机,或是B不一定需要一直跟A有连接.
将由A端变化数据后,到B端浏览数据,B点应该是没有数据变化的
#tar xvf /tmp/mysql-snapshot.tar
#chown –R mysql:mysql mysql
1重启B服务器的mysql
这时在/var/lib/mysql目录会出现master.info,此档案纪录了Master MySQL server的信息.
状况测试
1.A跟B网络及服务都正常情况下,由A端变化数据后,到B端浏览数据,检视是否有进行replication?!
2.模拟B当机,或是B不一定需要一直跟A有连接.
将由A端变化数据后,到B端浏览数据,B点应该是没有数据变化的
[/watermark]
作者:
风灵风之子
时间:
2006-1-5 01:56
标题:
[原创]mysql在线备份(搞linux网络的请收藏吧,有良心的跟帖子)
刚看到我顶你,可惜给你加不了精
哈哈。。
作者:
starlight
时间:
2006-1-5 08:36
标题:
[原创]mysql在线备份(搞linux网络的请收藏吧,有良心的跟帖子)
我加
作者:
woshihaike
时间:
2006-1-5 22:57
标题:
[原创]mysql在线备份(搞linux网络的请收藏吧,有良心的跟帖子)
很实用的东西,一般大一点的公司都会用到的。。。
作者:
风三
时间:
2006-1-11 13:44
标题:
[原创]mysql在线备份(搞linux网络的请收藏吧,有良心的跟帖子)
比较郁闷。。内功学的不好
作者:
黑色叶子
时间:
2006-1-13 17:17
标题:
[原创]mysql在线备份(搞linux网络的请收藏吧,有良心的跟帖子)
哈哈,你不讨好我,好东西我可不告诉你哦
作者:
jiedushi
时间:
2006-2-16 15:50
标题:
[原创]mysql在线备份(搞linux网络的请收藏吧,有良心的跟帖子)
的确是好东西啊
欢迎光临 黑色海岸线论坛 (http://bbs.thysea.com/)
Powered by Discuz! 7.2