mysql主从复制的介绍
MySQL复制就是一台MySQL服务器(slave)从另一台MySQL服务器(master)进行日志的复制然后再解析日志并应用到自身,类似Oracle中的Data Guard。
MySQL复制有那些好处:
第一是解决宕机带来的数据不一致,因为MySQL复制可以实时备份数据;
第二点是减轻数据库服务器的压力,多台服务器的性能一般比单台要好。但是MySQL复制不适合大数据量,大数据量推荐使用集群。
MySQL复制过程分成三步:
master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;
slave将master的binary log events拷贝到它的中继日志(relay log);
slave重做中继日志中的事件,将改变应用到自己的数据库中。
MySQL复制是异步的且串行化的
Mysql主从复制的搭建
环境准备
主机 win 10 ip: 10.22.75.158
从机 ubuntu 15.0.4 ip: 192.168.137.128
1.主机的配置
找到mysql的配置文件my.ini,并将下面的添加进去,[mysql]和[mysqld]是要加的
max_binlog_size表示最大的二进制文件大小,expire_logs_days 是日志的过期时间
server-id 是主机的id要求是必须唯一的
binlog-do-db,binlog-ignore-db 分别是要同步的数据库和忽略的数据库,如果不配置这两个应该是对mysql下的所有数据库进行同步,包括数据库的创建等,我这里配置的是test数据库(mysql登入 命令 mysql -u root -p 回车 然后输入密码)
[mysql]
default-character-set=utf8
[mysqld]
log-bin="C:/Program Files/MySQL/MySQL Server 5.5/binlog"
expire_logs_days=10
max_binlog_size=100M
server-id=1
binlog-do-db=test
binlog-ignore-db=mysql
配置完后可以查看下是否起效
可以看到log_bin 是on
在master上配置复制所需要的账户,%表示任何远程地址的root用户都可以连接master主机
GRANT replication slave ON *.*TO root@'%' IDENTIFIED BY 'gqb101112';
identified 是密码。
在主机创建test 数据库,一张表 gqb
主表的结构是这样的。
mysql从机的配置
1.mysql的安装
刚装完的ubuntu 先运行 apt-get update 来更新软件包列表,然后再运行命令apt-get mysql-server mysql-client 来安装完 mysql
2.配置服务id
[mysqld]
server-id=2
character_set_server=utf8
[client]
default-character-set=utf8
从机可以不配置bin-log 也可以配置,进入mysql
上面master_log_pos=4118的位置是从下面这幅图中Position字段的值
master_log_file可以在主机中通过 show master status 查看文件名。
然后开启从机的slave 运行命令行 start slave;然后通过 show slave status\G; 来查看状态
上面划线的是mysql开启的两个线程,分别来读取主机上的二进制文件和执行mysql 。接下来在主机上插入数据,然后查看从机的数据有么有更新,运行结果就是下面三张图
配置过程中遇到的问题
就是ubuntu表的字段的字符集不是utf8 导致主从复制时候出现错误,导致中断同步;
首先将 ubuntu的字符集配置成 h_CN.utf8
1,查看系统支持的字符集
locale -a
结果:
feng@feng :~$ locale -a
C
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZW.utf8
POSIX
zh_CN.utf8
zh_HK.utf8
zh_SG.utf8
zh_TW.utf8
2,修改字符集
export.utf8
修改后,可以通过 locale 查看下当前的字符集
如何修改 字段的字符集:http://blog.csdn.net/lyjtynet/article/details/6261066
如何修改配置ubuntu mysql 的字符集:http://blog.csdn.net/huazhizui/article/details/8637002