码迷,mamicode.com
首页 > 数据库 > 详细

MySQL主从配置

时间:2015-06-22 16:12:49      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

MySQL这个东西呢,是一个比较容易上手的数据库,但是要想精通,是需要下很大功夫的。

以下是一些MySQL简单的主从配置,随便写写,有时间就改改,慢慢进步吧。

目前公司里面用的是1台实体机作为MySQL的数据库,前段时间做了个从库的配置,目前只是简单的主从同步,接下来的主备切换/数据恢复还在研究当中。

1.理论基础

在实际的一些生产环境中,由单台Mysql作为独立的数据库在工作的过程中,非常容易由于短时间内的频繁读写操作,造成数据库负载、流量的增高,导致服务器内存占用太高,进而页面卡死,系统不能正常运作。这样是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面。

 

2.准备工作

2台实体机作为主从。

主库IP:192.168.0.111 主库上MySQL安装版本为:5.5.25

从库IP:192.168.0.121 从库上MySQL安装版本为:5.5.43

 

3.开始

主库my.cnf配置文件:

启用log_bin,设置对应路径如log_bin=/var/lib/mysql/mysql-bin(mysql的二进制日志,记录数据库的操作)

server-id = 1

#Binlog-do-db=xxx(配置要复制的库)

#Binlog-ignore-db=xxx(配置不要复制的库)

重启主库 service mysqld restart

 

从库my.cnf配置文件:

启用logs-bin

server-id = 121

skip-slave-start

replicate-ignore-db = mysql 不同步数据库mysql

replicate-ignore-db = test 不同步数据库test

replicate-ignore-db = information_schema 不同步数据库information_schema

重启从库 service mysqld restart

 

在从库新建一个user,并在主库上赋予该 从库IP:user 查询主库的权限

mysql>GRANT REPLICATION SLAVE ON *.* to ‘slave121‘@‘192.168.0.121‘ IDENTIFIED BY ‘slave121_password‘;

 

备份主库数据->从库

A.备份主库数据

方法1:

mysqldump -uroot -p --single-transaction --master-data=2 --all-databases --default-character-set="utf8" >/var/mysqlbk/111all.sql 2>/var/mysqlbk/111all.log 打包0.111上数据库的数据到/var/mysqlbk/111all.sql中,打包记录在111all.log中方法2:备份指定数据库,过滤test mysql information_schema

mysqldump -uroot -p --single-transaction --master-data=2 --default-character-set="utf8" --databases xxx_a xxx_b xxx_c(指定打包的数据库)  >/var/mysqlbk/111all.sql 2>/var/mysqlbk/111all.log

 

B.还原数据 若用方法1,要排除掉mysql test information_schema

方法1对应还原:

mysql -utest -p  --one-database xxx_a xxx_b xxx_c  < /tmp/111all.sql  --default-character-set=utf8 -h 127.0.0.1

方法2对应的还原:

mysql -utest -p  < /tmp/111all.sql  --default-character-set=utf8 -h 127.0.0.1

 

让从库读主库的log_bin,实现同步

在打包的111all.sql文件中,查找binlog的File与Position值,如mysql-bin.000039    261

在从库上执行:

mysql> change master to
master_host=’192.168.0.111’,

master_user=’slave121’,

master_password=’slave121_password’,

master_log_file=’mysql-bin.000039’,

master_log_pos=261;

 

mysql>slave start;

mysql>show slave status;

**************** 1. row *******************
Slave_IO_State:
Master_Host: 192.168.0.111
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000039
Read_Master_Log_Pos: 415
Relay_Log_File: localhost-relay-bin.000008
Relay_Log_Pos: 561
Relay_Master_Log_File: mysql-bin.000005
Slave_IO_Running: YES
Slave_SQL_Running: YES
Replicate_Do_DB:
……………省略若干……………
Master_Server_Id: 1
1 row in set (0.01 sec)
==============================================

其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。

 

至此,MySQL的主从同步就实现了。

验证:主库中my.cnf文件定义binlog_format=mixed(row,statement不推荐),注意观察存储过程、视图等对数据一致性的影响。

 

MySQL主从配置

标签:

原文地址:http://www.cnblogs.com/look-moose/p/4579545.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!