**Mysql主从原理**
**Master**:记录数据更改操作
启用binlog日志
设置binlog日志格式
设置server_id
**Slave**:运行两个线程*Slave**:运行两个线程
-Slave_id :复制master主机binlog日志文件里的SQL到本机的relay-log文件里。
-Slave_sql :执行本机的relay-log文件里的SQL语句,重现master的数据操作。
**基本构建思路**
* 确保数据相同
-从库上必须要有主库的数据
* 配置主服务器
-启用binlog日志、授权用户、查看当前正在使用的日志
* 配置从服务器
-设置server_id,指定主库的信息
* 测试配置
-客户端连接主库写入数据,从库上面也能查到数据
**环境**
192.168.1.10(主库)
192.168.1.20(从库)
查看主库是否开启binlog日志
mysql>show master status;
Empty set (0.00 sec)
主库上面没有开启binlog日志,修改配置文件启用binlog日志
vim /etc/my.cnf
[mysqld]
server_id=51
log-bin=master51 (可以指定日志目录)
binlog_format="mixed"
修改完配置文件重启服务
systemctl restart mariadb.service
修改完成后看主库是否产生master日志文件(有新的文件产生代表binlog日志文件启用成功
ls /var/lib/mysql/master51.*
也可以登入数据库查看日志文件
第一步就做完了,下面我们需要创建一个授权用户,要让该用户有同步数据的权限
grant replication slave on *.* to repluser@"%" identified by "123456";
查看是否授权成功
select user,host from mysql.user;
客户端配置
先查看是否为从服务器
设置server_id
vim /etc/my.cnf
[mysqld]
server_id=52
重启服务
systemctl restart mariadb.service
登入从数据库
mysql -uroot -p123456
从库连接主库
mariadb> change master to
-> master_host="192.168.1.10",
-> master_user="repluser",
->master_password="liaodbs",
->master_log_file="master51.000002",
->master_log_pos=441;
// master_log_file=master51.000002 binlog日志
// master_log_pos=441 主库的偏移量
查看从库状态
show slave status\G; #加上\G是为了可以看起来可以更加规范。
我们需要确保这两个线程是运行的状态,我们可以启动主程序。
mariadb-> start slave;
重新查看,必须要是yes才表示你的主从成功。
到这里就代表你的主从创建成功了,你可以尝试去主数据库插入数据,然后去从库查询。