> Linux集群 > 系统运维 >

mysql主从备份

一、系统环境:

Centos5.5

主机(MASTER):192.168.0.10

从机(SLAVE): 192.168.0.20

在slave上yum安装Mysql

#yum install -y mysql mysql-server

不要开启mysql服务,将master上的/etc/my.cnf文件内容复制slave上的/etc目录下

#rm -rf /var/lib/mysql -R ''删除从主机上空的mysql数据目录

二、拷贝master上的mysql数据到slave

master上

#vim /etc/my.cnf ''查找mysql数据文件主目录,/var/lib/mysql

#cd /var/lib

#du -h * ''查看mysql数据文件大小

#scp /var/lib/mysql root@192.168.0.2:/var/lib/mysql-r  ''将master上mysql数据拷贝到slave上

{

如果数据文件很大,为防止在终端copy过程中出错,可以在远程主机中开启本地终端进行操作

#screen

#scp /var/lib/mysql root@192.168.0.2:/var/lib/mysql -r

}

注意拷贝过来的mysql目录的所属权限 #chown mysql.mysql /var/lib/mysql -R

三、修改配置文件my.cnf

master上

1.配置/etc/my.cnf

#vi /etc/my.cnf

修改[mysqld]

bind-address=192.168.0.10         ''本机内网IP地址

server-id=10                      ''ID是唯一的,运维中通常使用内部IP地址的最后一位数字

log-bin=/var/lib/mysql/log/mysql-bin  ''制定log目录

binlog-do-db=mysql_db            ''需要备份的数据库名,如果备份多个数据库则重复设置这个选项

binlog-ignore-db=xxx              ''不需要备份的数据库名。

log-slave-updates ''这个参数一定要加上,否则不会给更新的记录些到二进制文件里

slave-skip-errors                  ‘’跳过错误,继续执行复制操作

2.建立用户

使用mysql管理员用户进入mysql数据库

Mysql>grant replication slave on *.* to slave@192.168.0.20 identified by ‘123456’;

可在slave上连接测试#mysql –uslave –p123456 –h 192.168.0.10

Mysql>FLUCH TABLES WITH READ LOCK;  ‘’锁定主库表

Mysql>SHOW MASTER STATUS;

记录主库信息

slave上

修改配置文件my.cnf

#vi /etc/my.cnf

修改或添加[mysqld]

bind-address=192.168.0.20

server-id=20

log-bin=/var/lib/mysql/log/mysql-bin 

master-host=192.168.0.10
master-user=slave
master-password=123456
master-port=3306
replicate-do-db=mysql_db   ‘’需要备份的数据库名
replicate-ignore-db=xxx       ‘’忽略的数据库
master-connect-retry=60      ‘’如果从服务器发现主服务器断掉,重新连接的时间差(秒)
log-slave-updates             ‘’这个参数一定要加上,否则不会给更新的记录些到二进制文件里
slave-skip-errors              ‘’是跳过错误,继续执行复制操作



#/etc/init.d/mysqld start   启动数据库

Mysql –h192.168.0.10 –usalve –p123456

Mysql>show grants for slave@192.168.0.20;

在slave上设置同步

mysql> slave stop;
mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.10',MASTER_USER='slave',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001';

mysql>slave start;          ‘’启动slave服务

mysql>show slave status\G;   ‘’查看slave状态

其中 Slave_IO_Running 和 Slave_SQL_Running 两列的值都为 "Yes",表明 Slave 的 I/O 和 SQL 线程都在正常运行。
mysql>UNLOCK TABLES;

到此搭建完毕
(责任编辑:IT)