CentOS 6.3下MySQL主从复制笔记

2014-11-24 17:55:29 · 作者: · 浏览: 1

MySQL主从复制结构是基于mysql bin-log日志基础上,从库通过打开IO进程收到主库的bin-log日志增量信息,并保存到本地relay log,而后再通过打开MYSQL进程从relay log上获取的增量信息并翻译成SQL语句后写到从数据库


主从复制结构,实际上可以实现两个功能:


1.从库充当主库的数据库备份实例


2.读写分离,主库负责正常读写数据,从库只负责读数据


实际生产环境,因为很多应用实际读数据库的次数远大于写数据库的次数,所以在项目开发初期,编写程序时做一个判断,对所有读的操作全部推到从库,若从库无法获取数据,则再向主库获取数据,从而在一定意义上实现读写分离,缓解主库的IO压力。


所以生产环境下推荐使用这种架构。


数据库: mysql-5.6.10




mysql master:192.168.100.90


mysql slave:192.168.100.91






一.部署环境:



1.关闭iptables和SELINUX


# service iptables stop


# setenforce 0


# vi /etc/sysconfig/selinux


---------------


SELINUX=disabled


---------------



二.主mysql配置:(mysql master)


修改mysql配置文件:


# vi /etc/my.cnf


添加:


-----------------


# Replication Master Server


# bin日志路径


log-bin = /usr/local/mysql/log/bin.log


# 服务器ID号


server-id = 1


# 忽略mysql系统库复制


binlog-ignore-db=mysql


binlog-ignore-db=information_schema


------------


重启服务


# service mysqld restart



登录mysql后台:


# mysql -u root -p123456


查看此刻登录账号:


> select user();



在master为slave添加同步帐号:


> grant replication slave on *.* to 'slave'@'192.168.100.91' identified by '123456';



查看创建的用户:


> select user.host from mysql.user;



查看权限:


> show grants for 'slave'@'192.168.100.91';



mysql锁表只读(其他账户登录mysql后无法进行写表操作,防止备份数据库后,主mysql表更新,导致和从数据库内容不一致)


> flush tables with read lock;



查看锁表倒计时时间:


> show variables like '%timeout%';


------------------------


....



wait_timeout | 28800


------------------------



将master的数据库表全部备份导出,并传送到slave服务器上。



# /usr/local/mysql/bin/mysqldump -u root -p123456 --opt --flush-logs --all-database > /root/allbak.sql


# cd ~


# scp allbak.sql root@192.168.100.91:/root



查看mysql偏移量(数据库如果有写操作,偏移值会递增)


# mysql -u root -p123456 -e "show master status"


----------------------


+------------+----------+--------------+------------------+-------------------+


| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |


+------------+----------+--------------+------------------+-------------------+


| bin.000009 | 120 | | | |


+------------+----------+--------------+------------------+-------------------+


----------------------


保证FILE列和Position列与从库配置一致: