您的位置:首页 > 数据库 > MySQL

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手册都有,建议使用最新英文版的,权威,更新快.这里只是一个简单的例子
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: