CentOS 5.5下MySQL主从备份

2014-11-24 18:38:23 · 作者: · 浏览: 0

一、系统环境:


主机(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;


到此搭建完毕