CENTOS7 yum安装mysql主从
前期环境
192.168.1.8 master
192.168.1.9 slave
关闭防火墙
systemctl stop firewalld
setenforce 0
安装mysql
yum -y install mariadb mariadb-server
编辑 master my.conf
server-id=1
log-bin=mysql-bin
启动数据库
systemctl start mariadb
进入数据库
mysql
进行本地创建
grant all on *.* to 'slave'@'192.168.1.15' identified by '123';
flush privileges;
show master status;
+------------------+----------+--------------+---------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+---------------------------------------------+
| mysql-bin.000003 | 459 | | information_schema,performance_schema,mysql |
+------------------+----------+--------------+---------------------------------------------+
进入另一台
编辑slave my.cnf
log-bin=myql-bin
server-id=2
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.8
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 459
Relay_Log_File: mariadb-relay-bin.000002
Relay_Log_Pos: 529
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
(这里必须出现双yes才算成功)
1、STATMENT模式:基于SQL语句的复制(statement-based replication, SBR),
每一条会修改数据的sql语句会记录到binlog中。
优点:不需要记录每一条SQL语句与每行的数据变化,这样子binlog的日志也会比较少,减少了磁盘IO,提高性能。
缺点:在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题)
2、基于行的复制(row-based replication, RBR):
不记录每一条SQL语句的上下文信息,仅需记录哪条数据被修改了,修改成了什么样子了。(不记录sql执行过程,只记录结果!)
优点:不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。
缺点:会产生大量的日志,尤其是alter table的时候会让日志暴涨。
3、混合模式复制(mixed-based replication, MBR):以上两种模式的混合使用,
一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。
mysql 主从复制的作用:
1、主数据库出现问题,可以切换到从数据库。
2、可以进行数据库层面的读写分离。
3、可以在从数据库上进行日常备份。
来源:https://www.cnblogs.com/fanzai/p/12572338.html