数据库改造操作步骤

本次改造的目标有三个:
1、 重做镜像,解决原来主从数据不一致问题
2、 把mysql双向复制改为单向复制
3、 Report依赖改造:40.5上ysanalytics新加入ysanalytics数据库,把Dev_authserver中的一些静态统计表导入到ysanalytics库中,原来专门的ysanalytics数据库机器取消。

 

生产环境上的操作步骤
一、操作人:田志祥,停止所有应用tomcat。操作人:田志祥,

二、操作人:田志祥,停止40.5机器上的heartbeat,确认机器重启时heartbeat不会自动重新启动。


三、去除原主备机的双复制机制,从主机上把数据导出到备机上重做镜像,并配置为单向镜像。由周耀荣完成。

1、主服务器上备份所有数据库:

在主机上执行升级前备份操作:
备份前进行锁所有表操作
mysql>FLUSH TABLES WITH READ LOCK;
在新的SSH窗口中使用原来升级前备份脚本备份正在使用的数据库。
备份完成后给所有表去锁
mysql>UNLOCK TABLES;
把备份集拷贝到30.18备份机上备份
 
2、在主机与备机上停止mysql:
stop slave;
mysqladmin shutdown -p

3、修改主机与备机上的/etc/my.cnf文件,注释掉复制的配置信息
master-host = 192.168.40.5
master-user = replica
master-password = replica
master-port = 3306

4、主机与备机上更改log-bin到专门目录
修改/etc/my.cnf,把log-bin=bin更改为log-bin=/usr/local/mysql/log-bin/bin
创建相应的目录,把原先的log-bin相关文件迁移到该目录,并授权给mysql用户
mkdir /usr/local/mysql/log-bin
cd /usr/local/mysql/data
mv bin.* /usr/local/mysql/log-bin/
chown -R mysql: /usr/local/mysql/log-bin

5、删除主机与备机上的复制相关文件
删除所有与复制有关的文件:
cd /usr/local/mysql/data
rm   master.info relay-log.info
rm *relay-bin*

6、修改备机上的/etc/my.cnf文件,修改隔离级别,配置复制时忽略mysql与ysanalytics
transaction_isolation = READ-UNCOMMITTED
replicate-ignore-db = mysql
replicate-ignore-db = ysanalytics

7、启动主机和备机mysql,使用show slave status\G查看原先slave状态是否已经去除。
mysqld_safe --user=mysql &

8、删除主机与备机多余的数据库
drop database Dev_authserver071103
drop database Dev_authserver071116
drop database Dev_dataserver071103
drop database Dev_dataserver071116
drop database Test_Dev_dataserver
drop database Test_kd_admin
drop database kd_admin071103
drop database kd_admin071116


9、在主机上对Dev_authserver、Dev_dataserver、kd_admin三个数据库做备份,并记录同步点
在主机上用show processlist命令确保数据库无连接,用下面命令锁住所有的表:
 FLUSH TABLES WITH READ LOCK;
 新开一个到主机SSH窗口,对Dev_authserver、Dev_dataserver、kd_admin三个数据库做备份
mysqldump -p${passwd} -R --single-transaction Dev_authserver > ysdb_Dev_authserver_forslave_20081126.sql
mysqldump -p${passwd} -R --single-transaction Dev_dataserver > ysdb_Dev_dataserver_forslave_20081126.sql
mysqldump -p${passwd} -R --single-transaction kd_admin > ysdb_kd_admin_forslave_20081126.sql
tar czf ysdb_forslave_20081126.tgz *forslave_20081126.sql
 使用mysql命令SHOW MASTER STATUS;查看主机当前bin-log文件名与位置并做记录。
 把备份文件传到备机上
scp -P 2222 ysdb_forslave_20081126.tgz root@192.168.40.5:/root
 备份完成后,在主机原来锁表窗口发出下面来解表锁:
 UNLOCK TABLES;

 主机已经有复制用户的授权,如果没有请用下面的语句来授权:
        use mysql;
        delete from user where user="replica";
        flush privileges;
 GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.40.%' IDENTIFIED BY 'replica';

10、在备机上把Dev_authserver、Dev_dataserver、kd_admin三个数据库删除后重新创建,并导入从主机备份的数据文件。
在备机40.5上删除这三个数据库并重新创建:
drop database kd_admin;
drop database Dev_dataserver;
drop database Dev_authserver;
create database kd_admin;
create database Dev_dataserver;
create database Dev_authserver;
导入为重做镜像备份的数据:
cd /root
tar xzf ysdb_forslave_20081126.tgz
mysql -p${passwd} kd_admin < ysdb_kd_admin_forslave_20081126.sql
mysql -p${passwd} Dev_dataserver < ysdb_Dev_dataserver_forslave_20081126.sql
mysql -p${passwd} Dev_authserver < ysdb_Dev_authserver_forslave_20081126.sql

在备机的mysql上发出下面复制配置语句:
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.40.6',
MASTER_USER='replica',
MASTER_PASSWORD='replica',
MASTER_LOG_FILE='recorded_log_file_name',
MASTER_LOG_POS=recorded_log_position;
把文件名和位置改为步骤9中记录的文件名和位置。
最后发出start slave指令并用show slave status\G查看是否正常。确认一下ysanalytics数据库在复制时被ignore。


四、备机40.5上增加ysanalytics数据库,把Dev_authserver中的一些静态统计表导入到ysanalytics库中,停止原来的ysanalytics数据库。由周耀荣完成。

1、操作人:田志祥,在192.168.30.28上停用crontab的数据处理任务,关闭apache。
crontab -e
apachectl stop

2、在原来ysanalytics数据库机器192.168.30.28上,用show processlist命令确保当前无用户连接。备份ysanalytics数据库,把文件传到备机40.5上。
mysqldump -p${passwd} -R --single-transaction ysanalytics > ysdb_ysanalytics_formigrate_20081126.sql
tar czf ysdb__formigrate_20081126.tgz ysdb_ysanalytics_formigrate_20081126.sql
scp -P 2222 ysdb__formigrate_20081126.tgz root@192.168.40.5:/root
关闭数据库:
mysqladmin -p shutdown

3、在备机40.5上新建ysanalytics数据库,把30.28上备份的数据文件导入到ysanalytics数据库中。
cd /root
tar xzf ysdb__formigrate_20081126.tgz
create database ysanalytics;
mysql -p{passwd} ysanalytics < ysdb_ysanalytics_formigrate_20081126.sql

4、在主机40.6的Dev_authserver数据中执行Dev_authserver.20081125.sql脚本(里面有更改一个静态统计表名)。在备机上确认同步状态是正常的,确认表名已经被更改。

5、在备机40.5上执行shell脚本dump_statics_tables.sh(里面的数据库密码需要修改为生产环境的密码),完成从Dev_authserver导出几个静态统计表,并导入到ysanalytics数据库中。

6、在备机40.5的ysanalytics数据库中执行ysanalytics.20081125.sql

五、备机40.5上的用户授权。由周耀荣完成。
1、在备机上执行下面授权命令:
grant select on Dev_authserver.* to 'ysweb_readonly'@'%' identified by 'ysWeb@2008@))*';
grant all on ysanalytics.* to 'ysweb_readonly'@'%' identified by 'ysWeb@2008@))*';
grant execute on procedure Dev_authserver.pro_calculate_for_t_stat_user_analysis  to 'ysweb_readonly'@'%' identified by 'ysWeb@2008@))*';
grant execute on procedure Dev_authserver.procedure_for_t_stat_user_analysis_new  to 'ysweb_readonly'@'%' identified by 'ysWeb@2008@))*';

2、确保备机没有用户:ysWeb、replica
确保主机没有用户:ysweb_readonly
use mysql;
select user,host from user;
如果需要删除用户,可以使用下面的用户删除语句:
use mysql;
delete from user where user="username";
flush privileges;

3、操作人:田志祥,在192.168.30.28上修改 YSANALYTICS应用的配置文件,然后启动crontab的定时数据处理任务
YSANALYTICS数据库配置文件路径
%APACHE%/config.inc.php
配置文件(config.inc.php)代码说明
@define("USERNAME", "ysweb_readonly");        //数据库用户名
@define("PASSWORD", "ysWeb@2008@))*");     //数据库密码
@define("DBNAME","ysanalytics");    //数据库名称
@define("SERVERNAME", "192.168.40.5");  //数据库服务器IP
crontab -e
apachectl start


六、主机40.6上把步骤四已经导出的表态统计表删除掉。由周耀荣完成。
在主机40.6上删除Dev_authserver中已经导入到备机ysanalytics的静态统计数据表
use Dev_authserver;
drop table t_stat_corp_catalog;
drop table t_stat_corp_city_dist;
drop table t_stat_corp_province_dist;
drop table t_stat_exchange;
drop table t_stat_member;
drop table t_stat_message;
drop table t_stat_saas_dist_city;
drop table t_stat_saas_dist_prov;
drop table t_stat_saas_period;
drop table t_stat_searchkey;
drop table t_stat_trade_dist;
drop table t_stat_user_analysis;
drop table t_stat_user_analysis_new;
drop table t_stat_user_count;
drop table t_stat_user_increase;
drop table t_temp_SaasUser_Info;
drop table t_stat_partner_user_list;
在备机上确认该操作已经生效,show slave status\G,并查看表是否已经删除。
通过脚本来附加验证同步是否正常(脚本里面的密码必须更改为生产环境的密码)
在主机40.6上执行
./add_testtable.sh
查看主备机的Dev_authserver库是否已经都有test_monitor_slave表,里面都有10条数据
在主机40.6上执行
./del_testtable.sh
查看主备机上的test_monitor_slave是否都已经被删除。

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15119715/viewspace-677116/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15119715/viewspace-677116/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值