MySQL简单Replication集群系统搭建
2009-10-22 16:33
741 查看
最近发现公司的服务器很不安全,第一由于是数据中转,很讲究时效性,也就是上午的备份对下午来说一点意义都没有.第二只有1台服务器,我始终认为一台服务器是绝对不够安全的,比如每台服务器出现故障的概率是千分之一,那么2台同时出现故障的概率大约只有百万分之一!于是,在我的强烈要求下从公司又分得一台服务器,intel至强4核4g内存,500g硬盘,看起来应该还不错,呵呵
之所以选择mysql replication不选择mysql cluster第一服务器数量有限,第二,要解决的问题仅仅是备份问题.
Replication是一个异步复制过程,共有3个线程,其中2个(1个sql和1个io)在slave端,拧一个io线程想master端,实现replication必须先打开master端的binary log即二进制日志.复制过程实际就是slave从master获取二进制日志,然后按照日志中的顺序一次执行.
接下来开始搭建我的replication复制系统很简单的master-slave系统,大致有4步,1),安装系统,主服务器上主准备工.2)主服务器备份数据,3)从服务器安装备份数据,4)从服务器配置.
首先将两台服务器都升级到最新的5.1.40,选择最新版,还是基于安全考虑的,编译如下,很简单的配置:
./configure --prefix=/home/mysql /
--without-debug /
--enable-thread-safe-client /
--enable-assembler /
--enable-profiling /
--with-mysqld-ldflags=-all-static /
--with-client-ldflags=-all-static /
--with-charset=latin1 /
--with-extra-charsets=utf8,gbk /
--with-plugins=partition,csv,federated,heap,innobase,myisammrg,myisam,ndbcluster /
--with-mysqld-user=mysql /
--without-embedded-server /
--with-server-suffix=-xiao7ng /
--with-unix-socket-path=/home/mysql/sock/mysql.sock
服务器果然不错,不到1个小时就编译安装完成,速度有点惊人,呵呵.
创建一个用于复制到账户,该账户应该拥有复制权限grant replication slave on *.* to 'username'@'host' identified by 'password'.
在主服务器上备份数据有很多,具体百度,这里讲两个简单的,第一冷备份,关掉mysql服务,人后拷贝数据文件,第二热备份.
第一种先要看下主服务器的当前日志名和偏移量,然后没啥说的命令如下:
mysql>flush tables with read lock;
mysql>show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000018 | 221 | test | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
$tar cvf data.tar ./data
mysql>unlock tables;
第二种用mysqldump,innodb的麻烦些要用到ibback工具
mysql>flush tables with read lock;
$mysqldump –uroot –p –master-data dbname>/path/to/bak.sql
去的bak.sql后然后执行
$grep “CHANGE MASTER” bak.sql
CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000018’,MASTER_LOG_POS=221;
再把备份的数据集拷贝到从服务器上,然后对于第一种非常简单,直接把数据放到数据目录下,即可
第二种使用mysql工具即可
$mysql –uroot –p -Ddbnamestop slave;
否则报错.
这些完成后就是设置从服务器,主服务器的ip,用户名,密码,端口号也可以在my.cnf里设置
命令大概是:
mysql>CHANGE MASTER TO
->MASTER_HOST='10.1.1.251',
->MASTER_PORT=3306;
->MASTER_USER='slave',
->MASTER_PASSWORD='slave',
->MASTER_LOG_FILE='mysql-bin.000018',
->MASTER_LOG_POS=106;
执行之后,用start slave启动复制进程
可以用show slave status查看当前状态
如果发现错误,应该打开错误日志去查看错误信息,不在赘述,值得注意的是MASTER_LOG_FILE和MASTER_LOG_POS容易出错,这也是大部分,replication搭建错误的原因.
至于replication的原理呀,复制级别,复杂架构,运维等其实mysql手册都有,建议使用最新英文版的,权威,更新快.这里只是一个简单的例子
之所以选择mysql replication不选择mysql cluster第一服务器数量有限,第二,要解决的问题仅仅是备份问题.
Replication是一个异步复制过程,共有3个线程,其中2个(1个sql和1个io)在slave端,拧一个io线程想master端,实现replication必须先打开master端的binary log即二进制日志.复制过程实际就是slave从master获取二进制日志,然后按照日志中的顺序一次执行.
接下来开始搭建我的replication复制系统很简单的master-slave系统,大致有4步,1),安装系统,主服务器上主准备工.2)主服务器备份数据,3)从服务器安装备份数据,4)从服务器配置.
首先将两台服务器都升级到最新的5.1.40,选择最新版,还是基于安全考虑的,编译如下,很简单的配置:
./configure --prefix=/home/mysql /
--without-debug /
--enable-thread-safe-client /
--enable-assembler /
--enable-profiling /
--with-mysqld-ldflags=-all-static /
--with-client-ldflags=-all-static /
--with-charset=latin1 /
--with-extra-charsets=utf8,gbk /
--with-plugins=partition,csv,federated,heap,innobase,myisammrg,myisam,ndbcluster /
--with-mysqld-user=mysql /
--without-embedded-server /
--with-server-suffix=-xiao7ng /
--with-unix-socket-path=/home/mysql/sock/mysql.sock
服务器果然不错,不到1个小时就编译安装完成,速度有点惊人,呵呵.
创建一个用于复制到账户,该账户应该拥有复制权限grant replication slave on *.* to 'username'@'host' identified by 'password'.
在主服务器上备份数据有很多,具体百度,这里讲两个简单的,第一冷备份,关掉mysql服务,人后拷贝数据文件,第二热备份.
第一种先要看下主服务器的当前日志名和偏移量,然后没啥说的命令如下:
mysql>flush tables with read lock;
mysql>show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000018 | 221 | test | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
$tar cvf data.tar ./data
mysql>unlock tables;
第二种用mysqldump,innodb的麻烦些要用到ibback工具
mysql>flush tables with read lock;
$mysqldump –uroot –p –master-data dbname>/path/to/bak.sql
去的bak.sql后然后执行
$grep “CHANGE MASTER” bak.sql
CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000018’,MASTER_LOG_POS=221;
再把备份的数据集拷贝到从服务器上,然后对于第一种非常简单,直接把数据放到数据目录下,即可
第二种使用mysql工具即可
$mysql –uroot –p -Ddbnamestop slave;
否则报错.
这些完成后就是设置从服务器,主服务器的ip,用户名,密码,端口号也可以在my.cnf里设置
命令大概是:
mysql>CHANGE MASTER TO
->MASTER_HOST='10.1.1.251',
->MASTER_PORT=3306;
->MASTER_USER='slave',
->MASTER_PASSWORD='slave',
->MASTER_LOG_FILE='mysql-bin.000018',
->MASTER_LOG_POS=106;
执行之后,用start slave启动复制进程
可以用show slave status查看当前状态
如果发现错误,应该打开错误日志去查看错误信息,不在赘述,值得注意的是MASTER_LOG_FILE和MASTER_LOG_POS容易出错,这也是大部分,replication搭建错误的原因.
至于replication的原理呀,复制级别,复杂架构,运维等其实mysql手册都有,建议使用最新英文版的,权威,更新快.这里只是一个简单的例子
相关文章推荐
- mysql replication cluster 双机热备集群搭建及常见错误排除
- 消息订阅发布系统Apache Kafka分布式集群环境搭建和简单测试
- 1 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之DRBD的搭建
- Linux系统Kafka集群搭建与简单测试
- maven+springmvc+spring+ibatis+velocity+mysql搭建简单登陆系统
- 使用Mysql搭建简单的可持续的Cache系统
- 消息订阅发布系统Apache Kafka分布式集群环境搭建和简单测试
- 2 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之MySql的搭建
- 消息订阅发布系统Apache Kafka分布式集群环境搭建和简单测试
- shell script自动搭建简单的mysql主从(replication)
- 消息订阅发布系统Apache Kafka分布式集群环境搭建和简单测试
- 搭建Master-Master Mysql Replication 集群
- 3 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之heartbeat的搭建
- 两台电脑来简单搭建Windows平台下的MySQL集群
- 基于腾讯云的Centos6系统搭建Apache+Mysql+PHP开发环境
- MySQL优化之——集群搭建步骤具体解释
- 亿级Web系统搭建——单机到分布式集群
- nginx+apache+mysql+php+memcached+squid搭建集群web环境
- Docker + Nodejs + Kafka + Redis + MySQL搭建简单秒杀环境
- amoeba+mmm搭建mysql高可用负载均衡集群