![](https://img.kancloud.cn/41/e0/41e066af9a6c25a24868d9667253ec98_1241x333.jpg)
*****
## 主从复制
### 复制的基本原理
![](https://img.kancloud.cn/7b/21/7b21ba30f87eeaea15db596afa308d63_583x421.png)
### 复制的三步骤
* 1.master将改变记录到二进制日志。这些记录过程叫做二进制日志事件,binary log events
* 2.slave将master的binary log events拷贝到它的中继日志
* 3.slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL复制是异步的且串行的
### 复制的基本原则
* 1.每个slave只有一个master
* 2.每个slave只能有一个唯一的服务器ID
* 3.每个master可以有多个salve
### 一主一从常见配置
* MySQL版本一致且后台服务可以运行
* 主从主机可以相互通信
* 主从配置都在\[mysqld\]结点下,都是小写
主机配置文件-my.ini
~~~
server-id = 1 # [必须]主服务器唯一ID
log-bin = 自己本地的路径/mysqlbin # [必须]启用二进制日志
log-err = 自己本地的路径/mysqlerr # [可选] 启用错误日志
从机配置文件-mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf
server-id = 1 # [必须]主服务器唯一ID
log-bin = 自己本地的路径/mysqlbin # [可选]启用二进制日志
~~~
修改过配置文件之后,要重启MySQL服务
~~~
service mysql restart
~~~
主从都关闭防火墙
~~~
service iptables stop
~~~
在Windows主机上建立账户并授权slave
```
grant replication slave on *.* to 'zhangsan'@'从机数据库IP' identified by '123456';
show master status;
记录下File和position的值
```
配置Linux从机
```
change master to master_host = '192.168.0.161',
master_user = 'juran',
master_password = '123',
master_log_file = 'binlog.000004',
master_log_pos= 908;
```
### 测试是否配置成功
```
start slave; 启动从服务器复制功能
show slave status\G
下面两个参数都是yes,则说明主从配置成功
slave_io_running:yes
slave_sql_running:yes
```
- 1-数据库-基本使用
- 1-1-数据存储
- 1-2-数据库
- 1-3-MySQL安装和配置
- 1-4-SQL
- 1-5-数据完整性
- 1-6-命令行操作数据库
- 2-MySQL查询
- 2-1-MySQL查询
- 2-2-条件
- 2-3-聚合函数
- 2-4-分组
- 2-5-排序
- 2-6-分页
- 2-7-连接查询
- 2-8-子查询
- 2-9-自关联
- 3-MySQL外键
- 4-MySQL与Python交互
- 4-1-数据准备
- 4-2-数据表的拆分
- 4-3-Python操作MySQL
- 5-MySQL高级
- 5-1-视图
- 5-2-事务
- 5-3-索引
- 5-4-账户管理(了解)
- 6-数据库存储引擎
- 6-1-MyISAM存储引擎
- 6-2-Innodb存储引擎
- 6-3-CSV存储引擎
- 6-4-Memory存储引
- 7-MySQL基准测试
- 8-explain分析SQL语句
- 8-1-影响服务器性能的几个方面
- 8-2-explain分析SQL
- 9-索引优化案例
- 10-索引优化
- 11-排序优化
- 12-慢查询日志
- 13-Show Profile进行SQL分析
- 14-数据库锁
- 15-主从复制
- 16-MySQL分区表
- 17-MySQL操作规范