1、mysql主从复制的概念
mysql主从复制是指将数据从mysql主服务器master节点复制到一个或者很多个slave从节点,由于mysql的异步复制方式,主数据库服务器在执行完客户端提交的事务后会立即将结果返给给客户端,不需要知道从库是否已经接收并处理,从数据的数据更新在远程连接时进行复制主数据库服务器上所有库(或者指定库)和表(或者指定表)。
2、 mysql主从复制的优点
①、当出现高并发时可以减轻mysql的压力,在现实情况中,master主服务器主要用于实时的业务数据操作。slave从服务器一般用于读取的操作,充分利用服务器性能。
②、当主数据库出现故障宕机之后,从数据库就可以代替主数据库继续保持业务流程不受影响。
3、 mysql主从复制原理
mysql主从复制主要开启了三个线程分别是master服务器Binlog Dump thread,I/O thread, SQL thread,Binlog Dump thread主要用于日志文件记录数据库的读写增删,当在从节点运行start slave 时会在从节点创建I/O线程来链接master节点,请求master某个bin-log,position之后的内容。master节点收到slave I/O线程发来的日志请求信息,会将bin-log内容,position返回给slave I/O线程,slave节点收到master节点binlog dump 进程发来的更新时,会将master节点bin-log日志内容写入本地relay-log中继日志中,创建一个master.info的文件主要记录了master节点的host ip、用户名和密码,master bin-log名称和位置(position),从节点开启SQL线程,实时监控读取relay-log中的内容,解析成sql文件并在slave从节点数据库上执行,最终保证主从数据的一致性。
4、mysql主从复制配置
①主从服务器首先互相ping通,打开主和从服务器mysql配置文件,将server-id 和log_bin注释打开,主从数据库的
server- id配置不同(本配置主服务器ip地址是192.168.99.100,从服务器ip地址为192.168.99.101)。
②首先在主机上赋予丛机的权限,如果有多台从机的话,就赋予多次,如果同一网段可以赋予一次:GRANT REPLICATION SLAVE ON *.* TO user@'192.168.99.101' IDENTIFIED BY '1234';
③、通过 show master status命令查看主服务器的bin-log日志文件名称和position点(最好记录下来)
④登录slave从服务器数据库依次执行stop slave; change master to master_host='192.168.99.100', master_user='user', master_password= '1234', master_log_file='maste-bin.000006',master_log_pos=245;start slave
⑤最后查看slave的状态:show slave status\G;如果Slave_IO_Running和Slave_SQL_Running线程都为yes是主从复制配 置成功!
⑥测试查看效果,在主服务器上创建个库看看。
主数据库图一 从数据库图二·
注:可能出现Slave_SQL_Running: No的解决办法
由于master主服务器与slave从服务器的UUID重复,删除slave的auto.cnf文件,重启mysql服务,即可重新生成新的auto.cnf 文件,UUID也是重新生成的
$sudo rm -rf /var/lib/mysql/auto.cnf
$ systemctl restart mysql
写在最后
文章有待更改,有什么错误还望各位及时指出,欢迎交流,共同进步。