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;