引用:
MySQL 复制就是一台 MySQL 服务器(slave)从另一台 MySQL 服务器(master)进行日志的复制然后再解析日志并应用到自身,类似 Oracle 中的 Data Guard。
MySQL 复制有那些好处:
MySQL 复制过程分成三步:
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 :~$ 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 查看下当前的字符集
如何修改 字段的字符集:
如何修改配置 ubuntu mysql 的字符集:
来源: http://www.bubuko.com/infodetail-1948983.html