设为首页 加入收藏

TOP

通过主从复制机制完成MySQL数据库服务迁移(一)
2015-11-21 01:24:51 来源: 作者: 【 】 浏览:2
Tags:通过 主从 复制 机制 完成 MySQL 数据库 服务 迁移
0x00 背景
?业务所在机房裁撤,原业务机器也已经过保,通过MySQL主从复制机制完成MySQL数据服务的无缝迁移。
?
0x01 准备
?
1.环境:
?
原则上搭建mysql主从复制最好是操作系统版本、环境,MySQL版本、配置保持一致,这样可以保证MySQL主从集群的稳定性,以及减少版本和环境造成的异常,便于排查和定位问题。
?
由于我们涉及迁移的机器往往是很久以前上线,而且也从未有相关系统和服务升级的机制,还好这次涉及的MySQL版本比较高,与MySQL 5.6的兼容性还是比较好的,谢天谢地,谢前任。
?
?原机器环境:
? IP:A(机器已回收)
? 系统版本:suse 11 linux x64
? mysql版本:mysql 5.5.3?
? 配置文件路径:无
? 程序启动方式:/bin/sh /usr/local/mysql/bin/mysqld_safe &
?
?新机器环境:
?IP:xxxxxx B
?系统版本: tlinux 1.2 64bit(centos 6.2)
?mysql版本:mysql-5.6.25
?配置文件路径: /etc/my.cnf
程序启动方式: /etc/init.d/mysqld ?start
?
2.安装包准备
源码包 下载
cmake:yum install cmake (2.6.4) 即可 或 下载 https://cmake.org/files/v3.3/cmake-3.3.2.tar.gz
MySQL :http://dev.mysql.com/downloads/mysql/5.6.html#downloads
?
?
0x02 MySQL安装与配置?
1.安装(这里不是本文重点,如果出错了,需要根据错误分析解决)
?
原则上,运营环境一般推荐通过 源码进行编译安装,这样才能充分利用当前机器的特性,但是由于我们以前在相同系统环境下编译安装并制作了相关部署包,所以真实安装过程就略过了。这里的安装过程是我们一般通用的安装过程:
?
a. yum 安装
? yum install mysql mysql-server (推荐tlinux2.0,对应centos 7.0,fedora 20+)
很不幸,tilnux 1.2环境 yum安装的版本为mysql-5.1.61,老掉牙了。
?
b. 源码编译安装
?
cd mysql-5.6.25groupadd mysql
useradd -g mysql mysql -s /bin/false
?mkdir -p /data/dbdata
chown mysql:mysql ?/data/dbdata
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/dbdata ?-DSYSCONFDIR=/etc/
make&&make install
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
cd /usr/local/
mv ?mysql mysql-5.6.25 && ln -s mysql-5.6.25 mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on?
?
初始化mysql:
?/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/dbdata
?
vi /etc/profile
增加:export PATH=$PATH:/usr/local/mysql/bin
?
/etc/init.d/mysqld start
?
2.配置
?
旧机器:
?
登录 mysql服务终端:
?
设置server id:
set ?gloabl ?server_id=2;select ?@@server_id;
开启binlog:
SET SQL_LOG_BIN=1;
SET GLOBAL binlog_format = 'MIXED'; ##表结构变更以statement模式来记录,update或者delete等修改数据的语句是记录所有行的变更。
mysql> select @@server_id;
+-------------+
| @@server_id |
+-------------+
| 2 ? ? ? ? ? |
+-------------+
1 row in set (0.00 sec)
?
新机器:
vi /etc/my.cnf
?
log-bin = /data/dbdata/binlog/mysql-binbinlog_format = MIXED
binlog_cache_size = 4M
max_binlog_cache_size = 1024M
max_binlog_size = 1024M
expire_logs_days = 5log-slave-updates
server-id = 20151109
mysql> select ?@@server_id;+-------------+
| @@server_id |+-------------+
| ? ?20151109 |
+-------------+1 row in set (0.00 sec)
?
0x03 数据的导出与导入
?
1.数据导出:
?
涉及的DB不多,DB的读写不频繁,导出mysql数据我们选择使用mysqldump。
因为要添加主从信息,所以需要添加-master-data=1,附带锁表操作,当表的存储引擎为InnoDB时,加了 --single-transaction 可以减少锁表的影响,准确的说只会有短时间的全局读锁,比MyISAM的锁表情况要好得多。
?
mysqldump -u root --default-character-set=utf8 ?-Y -B ?--set-charset ?--single-transaction ? --master-data=1 ?hehehehhe > ?/data/backup/databases/hehehehhe20151109.sql
?
?
CHANGE MASTER
?
?
? -Y, --all-tablespaces?
? ? ? ? ? ? ? ? ? ? ?Dump all the tablespaces.
? -B, --databases ? ?Dump several databases. Note the difference in usage; in
? ? ? ? ? ? ? ? ? ? ?if you
首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Oracle 数据库日常巡检 下一篇MYSQL不能从远程连接的解决方法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: