标签:
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不推荐),注意观察存储过程、视图等对数据一致性的影响。
标签:
原文地址:http://www.cnblogs.com/look-moose/p/4579545.html