MySQL简单Replication集群系统搭建

本文介绍了如何搭建一个简单的MySQL Replication集群系统,以提高数据安全性及备份时效性。主要步骤包括:服务器升级、创建复制账户、主服务器备份数据、从服务器配置。文中提到了冷备份与热备份方法,并详细阐述了配置从服务器的过程,包括更改MASTER_LOG_FILE和MASTER_LOG_POS等关键参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   最近发现公司的服务器很不安全,第一由于是数据中转,很讲究时效性,也就是上午的备份对下午来说一点意义都没有.第二只有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 -Ddbname

不过启动的时候应如下启动bin/mysqld_safe --user=mysql –skip-slave-start &或者启动后在执行

mysql>stop 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手册都有,建议使用最新英文版的,权威,更新快.这里只是一个简单的例子

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值