MYSQL主备服务器切割方案
由于公司业务发展需求,目前主数据库服务器的配置及带宽满足不了需求。但从服务器配置比主的要高,
且带宽已经升级到20M 独享。故准备切换主从,具体操作步骤如下:
1、在master上面停止业务
a、在主从上面通过命令show processlist 查看主从同步是否已经结束;
b、如果结束,停止mysql /etc/init.d/mysql stop;
c、备份主从mysql数据库目录,tar zxvf mysql.tar.gz mysql此过程约1.5小时;
d、启动 mysql /etc/init.d/mysql start。
2、登陆新master拷贝data里面mysql数据库
scp appadmin@222.73.44.102:/raid/mysql/data/mysql.tar.gz ./
3、在新master的服务器上执行:
stop slave;
reset master; reset master清空了master的binlog以后创建了新的binlog,重置成主数据库。
备注:删除新的master服务器数据库目录中的master.info和relay-log.info文件,否则下次重启时还会按照从服务器来启动。
4、拷贝权限,在新master 上面解压mysql.tar.gz到mysql目录,大概2 分钟
5、拷贝原master server上面的mysql配置文件my.cnf到新master上面
a、修改mysql的配置文件,只需要改内存配置20G改成26G
vim /etc/mysql/my.cnf
mysqld
server-id=2
log-bin=mysql-bin
replicate-do-db=db
replicate-do-db=db2
。。。。。。。。。。
innodb_buffer_pool_size = 26G
log-error=/var/log/mysql/mysql_error.log|
b、启动mysql
/etc/init.d/mysql restart
c、登陆新master server 中的mysql库赋予从库权限帐号,允许用户在主库上读取日志
GRANT REPLICATION SLAVE ON *.* TO user@222.73.44.102 IDENTIFIED BY '****';|
d、检查创建是否成功
select user,host from mysql.user;
显示结果略去。
e、显示master库信息,记录File和Position,新slave库设置将会用到
show master status; +------------------+----------+--------------+------------------+
File Position Binlog_Do_DB Binlog_Ignore_DB
+------------------+----------+--------------+------------------+
mysql-bin.000006 106
+------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)|
6、修改新的slave 库(copy原slave 的my.cnf配置文件)
a、修改mysql的配置文件,只需要修改内存配置即可
vim /etc/mysql/my.cnf
mysqld
server-id=3
master-host=master ip
master-user=user
master-port=3306
master-connect-retry=60
replicate-do-db=db
innodb_buffer_pool_size = 20G
log-error=/var/log/mysql/mysql_error.log
b、启动mysql
/etc/init.d/mysql restart
c、验证连接新master库
mysql -h master ip -u user –ppasswd
d、在新的slave库上面设置同步,设置连接新master master_log_file为主库的file,master_log_pos为主库的Position
关闭从库服务
slave stop;
mysql> change master to
> master_host='master ip',
> master_user='user',
> master_password='passwd',
> master_port=3306,
> master_log_file='mysql-bin.000006',
> master_log_pos=106;\
启动从库服务
slave start;
7、在新slave上面进行输入show slave status\G;查看状态
Slave_IO_Running: Yes(网络正常);
Slave_SQL_Running: Yes(表结构正常);
8、在新slave 上,如果show slave status\G;查看状态不正常如下:
Slave_IO_Running: Yes(NO)(网络正(不)常);
Slave_SQL_Running NO( Yes)(表结构不(正)常)。
进一步验证,在主的上面插入数据后,再从上面看看是否过来,如果过来说明此次切割成功。
9、在新master MySQL上可输入MySQL> show full processlist;
观察其状态,正确结果也应该如截图所示
mysql> show full processlist;
+----+-------------+---------------------+------+-------------+-------+--------- --------------------------------------------------------------+----------------- ------+
Id User Host db Command Time State Info
+----+-------------+---------------------+------+-------------+-------+--------- --------------------------------------------------------------+----------------- ------+
1 system user NULL Connect 22332 Has read all relay log; waiting for the slave I/O thread to update it NULL
2 system user NULL Connect 22332 Connecti ng to master NULL
40 root localhost NULL Query 0 NULL show full proces slist
44 laoyw 192.168.1.112:58422 NULL Binlog Dump 86 Has sent all binlog to slave; waiting for binlog to be updated NULL
+----+-------------+---------------------+------+-------------+-------+--------- --------------------------------------------------------------+----------------- ------+ 4 rows in set (0.00 sec)
至此整个主从切换过程完成。此过程大约需要2到3小时,主要是备份数据库;
11、问题排查方法 如果出现问题。首先查看mysql日志,依据经验或者在google搜索解决。如不能在1小时内解决问题,将直接还原mysql备份的配置文件及数据文件,
大概需要2小时包括解压和测试。
12、如以上切换顺利完成,修改改java程序配置文件;
a、 修改所有爬虫的数据库配置文件fspider.cfg和sespider.cfg对应的数据库配置;
b、 修改新master 和爬虫server上面/etc/hosts文件里面的master对应的解析配置。