mysql生产环境实现主从复制_生产环境下的MySQL数据库主从同步总结

MySQL的主从同步是一个很成熟的架构,优点为:①在从服务器可以执行查询工作(即我们常说的读功能),降低主服 务器压力;②在从主服务器进行备份,避免备份期间影响主服务器服务;③当主服务器出现问题时,可以切换到从服务器。所以我在项目部署和实施中经常会采用这 种方案;鉴于生产环境下的mysql的严谨性,我这里推荐采用张宴兄的MySQL源码编译的方法(主从同步前建议ntpdate主从服务器的系统时间,以免同步时报错);

数据库目录及其它

my.cnf配置文件 /usr/local/webserver/mysql/my.cnf

mysql数据库位置 /usr/local/webserver/mysql/data/

主数据库:192.168.110.64

从数据库:192.168.110.62

操作系统:RHEL5.4 64位

服务器类型: HP 580G5,双四核XeonE5520,32G内存,4块300GSAS做成RAID10

mysql5.1.38源码编译过程如下:

/usr/sbin/groupadd mysql

/usr/sbin/useradd -g mysql mysql

unzip mysql-5.1.38.zip

cd mysql-5.1.38/

./configure –prefix=/usr/local/webserver/mysql/ –enable-assembler –with-extra-charsets=complex –enable-thread-safe-client –with-big-tables –with-readline –with-ssl –with-embedded-server –enable-local-infile –with-plugins=innobase

make && make install

chmod +w /usr/local/webserver/mysql

chown -R mysql:mysql /usr/local/webserver/mysql

cp support-files/my-medium.cnf /usr/local/webserver/mysql/my.cnf

#这部可依具体环境而定,压力大的化可采用huge.cnf

cd ../

①以mysql用户帐号的身份建立数据表:

/usr/local/webserver/mysql/bin/mysql_install_db –basedir=/usr/local/webserver/mysql –datadir=/usr/local/webserver/mysql/data –user=mysql

②启动MySQL(最后的&表示在后台运行)

/bin/sh /usr/local/webserver/mysql/bin/mysqld_safe –defaults-file=/usr/local/webserver/mysql/my.cnf &

一、设置主库

1、修改主库my.cnf,主要是设置个不一样的id和logbin

#vim /usr/local/webserver/mysql/my.cnf

server-id = 1

log-bin= binlog

binlog-do-db=iea

2、启动主库生效

#/bin/sh /usr/local/webserver/mysql/bin/mysqld_safe –defaults-file=/usr/local/webserver/mysql/my.cnf &

3、登陆主库

#/usr/local/webserver/bin/mysql -u root -p

4、赋予从库权限帐号,允许用户在主库上读取日志

mysql> grant all privileges on *.* to [email=]’admin’@’%'[/email] identified by ‘12345678’;

5、检查创建是否成功

select user,host from mysql.user;

6、锁主库表

mysql> flush tables with read lock;

7、显示主库信息

记录File和Position,从库设置将会用到

mysql> show master status;

+——————+———-+————–+——————+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+——————+———-+————–+——————+

| mysql-bin.000003 1635708 | | |

+——————+———-+————–+——————+

1 row in set (0.00 sec)

8、另开一个终端登陆124,打包主库迁移数据

# cd /usr/local/webserver/mysql/

# tar zcvf data124.tar.gz ./data

二、设置从库

1、传输拿到主库包、解包

登陆从库

#cd /usr/local/webserver/mysql/

#tar zxvf data124.tar.gz

2、解锁主库表

mysql> unlock tables;

3、修改从库my.cnf

# vi my.cnf

# slave

server-id=2

master-host=192.168.110.64

master-user=admin

master-password=12345678

4、验证连接主库

# /usr/local/webserver/mysql/bin/mysql -h 192.168.110.64 -u admin -p

5、在从库上设置同步

设置连接MASTER MASTER_LOG_FILE为主库的File,MASTER_LOG_POS为主库的Position

mysql> slave stop;

mysql> change master to master_host=’192.168.110.64′,master_user=’admin’, master_password=’12345678′,

master_log_file=’binlog.000003′, master_log_pos=1635708;

mysql> slave start;

6、启动从库服务

mysql> slave start;

7、进行测试

在主库上的iea表上建立名为yuhongchun的表

mysql> CREATE TABLE `yuhongchun` (

`id` INT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT ,

`username` VARCHAR( 20 ) NOT NULL ,

`password` CHAR( 32 ) NOT NULL ,

`time` DATETIME NOT NULL ,

`number` FLOAT( 10 ) NOT NULL ,

`content` TEXT NOT NULL ,

PRIMARY KEY ( `id` )

) ENGINE = MYISAM ;

在从表中马上看到了效果,主从同步成功了;为了更进一步验证在从库上输入show slave statusG;mysql> show slave statusG;

Slave_IO_Running: Yes(网络正常);Slave_SQL_Running: Yes(表结构正常),进一步验证了以上过程的正确性。

2010年10月20日第④版更新内容如下:

一、同步前先ntpdate主从服务器的系统时间;

二、增加了mysql5.1.38的编译安装过程,安装过程仍然采用张宴早期安装mysql的方法,摈弃了用脚本控制的办法;

三、从库取主库的方法仍然采用tar获取,未采用mysqldump的原因是在实际配置中发现,此法失败的机率比较大,故一直用tar取主数据库的完整快照,这里有网友不是太理解,这里重点说明下;

四、mysql主从复制虽然配置比较简单,但同时也是柄刃剑;因为如果在主库上发生误删表现象,从库也会发生;所以主表的单机备份一定要作为,主数据库上 我采用的mysqlhotcopy+mysqldump双完备方式;通过以前的工作经验知道,这样发生数据丢失的机率较低;

五、签于生产环境的严谨性,此贴欢迎大家交流探讨,找出其中的bug和错误,以免误导新人;此贴我会持续关注和更新

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

fd36bffceef597f61007249bab39600c.png

TechTarget

官方微博

1a369747a5d362acddc09aa36b6fafe0.png

TechTarget中国

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值