1、主从复制
1、复制的基本原理
1、三个步骤
- master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件binary log events
- slave将master的binary log events拷贝到它的中继日志(relay log)
slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL复制是异步的且串行化的
2、复制的基本原则
每一个slave只有一个master
- 每个slave只能有一个唯一的服务器ID
-
3、复制的最大问题
-
4、一主一从常见配置
1、前置条件
mysql版本一致且后台以服务器运行
-
2、主机修改my.ini配置文件
[必须]主服务器唯一ID
- server-id=1
- [必须]启用二进制日志
- log-bin=自己本地的路径/mysqlbin
- log-bin=/usr/local/mysql/bin/mysql/mysqlbin
- [可选]启用错误日志
- log-err=自己本地的路径/mysqlerr
- log-err=/usr/local/mysql/bin/mysql/mysqlerr
- [可选]根目录
- basedir=”自己本地路径/“
- basedir=”/usr/local/mysql/bin/mysql/“
- [可选]临时目录
- tmpdir=”自己本地路径”
- tmpdir= “/usr/local/mysql/bin/mysql/“
- [可选]数据目录
- datadir=”自己本地路径/Data/“
- datadir=”/usr/local/mysql/bin/mysql/Data/“
- read-only=0
- 主机,读写都可以
- [可选]设置不要复制的数据库
- binlog-ignore-db=mysql
[可选]设置需要复制的数据库
- binlog-do-db=需要复制的主数据库名字
1、配置
[mysqld] #配置主从配置主机配置 server-id=1 log-bin=/usr/local/mysql/bin/mysql/mysqlbin/ log-err=/usr/local/mysql/bin/mysql/mysqlerr/ basedir=/usr/local/mysql/bin/mysql tmpdir= /usr/local/mysql/bin/mysql datadir="/usr/local/mysql/bin/mysql/Data/" read-only=0 binlog-ignore-db=mysql binlog-do-db=learn
2、mac配置
#配置主从配置主机配置 log_bin=mysql-bin binlog_format=mixed server_id = 1 read-only=0 binlog-ignore-db=mysql binlog-do-db=learn
3、从机修改my.cnf配置文件
- binlog-do-db=需要复制的主数据库名字
[必须]主服务器唯一ID
- server-id=2
可选启用二进制日志
配置完都重启数据库
- 主机要对端口进行放行
或者关闭防火墙
mysql8.0命令
CREATE USER 'zhangsan'@'192.168.1.154' IDENTIFIED WITH mysql_native_password BY '123456';
刷新配置
flush privileges;
```sql mysql> CREATE USER ‘zhangsan’@’192.168.1.154’ IDENTIFIED WITH mysql_native_password BY ‘123456’; Query OK, 0 rows affected (0.03 sec)
mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
<a name="OE7wl"></a>
### 6、查询master的状态
```sql
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000005 | 156 | learn | mysql | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
记录下File和Position值
执行完这些操作之后不再操作主服务器MYSQL,防止主服务器状态值发生变化
7、在从机Slave上配置需要复制的主机
- 配置从机命令 ```sql mysql> CHANGE MASTER TO MASTER_HOST=’192.168.1.105’,MASTER_USER=’zhangsan’,MASTER_PASSWORD=’123456’,MASTER_LOG_FILE=’mysql_bin.000005’,MASTER_LOG_POS=156 -> ; Query OK, 0 rows affected, 2 warnings (0.01 sec)
- 开始复制
```sql
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
- 查看状态
下面两个参数都是Yes,则说明主从配置成功show slave status;
slave_io_running:yes
slave_sql_running:yes
8、之后创建表等
- 之后就可以创建包,添加数据等
- 每次重新配置都得去主机查看新的File和position值再次重新配置