日期:2014-05-16  浏览次数:20415 次

mysql主从数据库配置
1、分别在主从服务器的/etc/hosts下添加域名记录(此步骤可以忽略,以下直接使用ip地址)
# vi /etc/hosts
10.1.4.15       dbm.gccmx.com
10.6.5.8        dbs.gccmx.com

2、在主服务器上创建复制账户
mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'repeat'@'192.168.152.149' IDENTIFIED BY 'mysql' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

3、执行FLUSH TABLES WITH READ LOCK语句清空所有表和块写入语句:
mysql> FLUSH TABLES WITH READ LOCK;

4、创建快照,使用归档程序对主服务器上的数据目录中的数据库进行二进制备份(注:innodb引擎,最好关闭mysql服务)

*****************************建议使用sql语句进行数据的传输,不建议打包解压*****************************

shell> tar -cvf /tmp/mysql-snapshot.tar .

如果你想让归档只包括this_db数据库,应使用命令:
shell> tar -cvf /tmp/mysql-snapshot.tar ./this_db

然后将归档文件复制到从服务器主机的/tmp目录。在该机器上,进入从服务器的数据目录,并使用下述命令解压缩归档文件:

shell> tar -xvf /tmp/mysql-snapshot.tar
拷贝解压后的文件到从服务器mysql数据目录下面。删除info文件及日志文件。


5、主服务器上执行
mysql > SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000011 |      106 |              |                  |
+------------------+----------+--------------+------------------+
记录下File和position

mysql> UNLOCK TABLES;

6、停止从服务器的mysql服务,在my.cnf下添加server-id=slave_id,不能与主服务器相同
然后执行
确保slave进程处于关闭状态
mysql>stop slave;

启动复制信息
mysql>CHANGE MASTER TO
MASTER_HOST='192.168.152.148',
MASTER_PORT=3306,
MASTER_USER='repeat',
MASTER_PASSWORD='mysql',
MASTER_LOG_FILE='mysql-bin.000011',
MASTER_LOG_POS=106;
=====================修改时使用的=====================================
CHANGE MASTER TO
MASTER_HOST='192.168.152.148',
MASTER_PORT=3306,
MASTER_USER='repeat',
MASTER_PASSWORD='mysql',
MASTER_LOG_FILE='mysql-bin.000013',
MASTER_LOG_POS=106;
=====================修改时使用的=====================================

mysql>start slave;

mysql>show processlist;

mysql>show slave status\G


可能遇到的问题!
1、从数据Mysql > Slave status\G;显示:Slave_IO_Running:No
一个是网络有问题
二个是有可能my.cnf有问题
三个是授权的问题
一旦io为no了先看err日志,看看爆什么错

2、从数据Mysql > Slave status\G;显示:Slave_SQL_Running:No
解决方法:
stop slave;
set global sql_slave_skip_counter =1 ;
start slave;