MYSQL复制功能
Skylin 在前一个公司工作的时候,因为公司运营的系统的数据库中有金钱买卖相关的很重要的数据,服务器又是在别人那里,所以需要进行时时备份数据库,所以就使用MYSQL复制功能来达到时时备份的效果,下面我记录下设置过程,其中为了偷懒有些地方是我抄的别人的,呵呵,但是个人觉得又精简又完整。
Server_1:公网主服务器(假设为192.168.100.1)
创建一个支持备份的用户
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO backup@’%’ IDENTIFIED BY ‘1234′;
//注意backup为账号1234为密码,请根据具体情况设置
用vi打开my.cnf
设置:(字段信息可能已经存在,请先搜索位置)
server-id = 1
log-bin = shop-bin
Server_2:公网只读服务器(假设为192.168.100.2)
用vi 打开 my.cnf
设置:
server-id = 2
master-host=IP地址 //Server_1的IP
master-user=backup //Server_1的账号
master-password=1234 //Server_1的密码
replicate-do-db=shop //Server_1的数据库名称
注意:从服务器上的ID不能和主服务器上的ID一样
#[Mysql双向同步配置]
Server_1:公网主服务器(假设为192.168.100.1)
设置:
log-slave-updates //这一句话很重要,只有加上这一句话,才能将信息copy到从服务器上
master-host=IP地址 //Server_3的IP地址
master-user=backup //Server_3的账号
master-password=1234 //Server_3的密码
replicate-do-db=shop //Server_3的数据库
Server_3服务器配置(假设IP为:192.168.100.3)
设置:
server-id = 3
bin-log=shop-bin
master-host=IP地址 //Server_1的IP
master-user=backup //Server_1的账号
master-password=1234 //Server_1的密码
replicate-do-db=shop //Server_1的数据库名称
三台服务器设置完成后需要重新启动才能生效!
重启顺序建议:
Server_1
Server_3
Server_2
主服务器: 192.168.1.222
从服务器: 192.168.1.205
主服务器:
backup数据库为需要复制的数据库,设置 replicate@192.168.1.205 有访问权限:
grant file on *.* to ‘replicate’@'192.168.1.205′ IDENTIFIED BY ‘password’;
my.cnf中设置:
server-id=1
log-bin
sql-bin-update-same
binlog-do-db=backup //只做backup数据库日志
导出backup数据库重起主服务器运行
mysql>show master status;获得LOG_FILE和LOG_FILE_POS 从服务器: 设置my.cnf:
server-id=2;不能与master的相同,如果有多台slave,此值必须唯一,如果不填写,slava默认为2
master-host=192.168.1.222
master-user=replicate
master-password=password
master-port=3306
master-connect-retry=60
replicate-do-db=backup;数据库名
用下述命令启动从mysqld
mysqld –skip-slave
登陆从mysql,导入数据库然后检查数据是否进入,然后运行
mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.1.222',
-> MASTER_USER='replicate',
-> MASTER_PASSWORD='password',
-> MASTER_LOG_FILE='www-bin.001', // show master status看到的file
-> MASTER_LOG_POS=73; //show master status看到的pos
mysql>slave start;
如果看见数据库记录和主服务器不符,就运行
mysql>slave stop;
删除数据库,重新导入,然后再启动slave
测试成功后,启动从服务器就不需要再使用–skip-slave参数
几个命令:
show master status;在主服务器上看状态
show slave status;在从服务器上看状态
change master …;在从服务器上更改主服务器信息,如果服务器更改了信息,则更改my.cnf无效,因为已经把信息写入master.info文件中,必须使用此命令更改
FLUSH PRIVILEGES;不重起服务器,使权限马上更新
如果你想使用复制数据文件的方式来备份数据库,只要在从服务器上的mysql命令行先键入slave stop;然后复制数据库文件,复制好了,再 在mysql命令行键入slave start;启动从服务器,这样就即备份了数据有保证了数据完整性,而且整个过程中主服务器的mysql无需停止。
Posted in mysql |