【11.5】MySQL 主从
17.1 MySQL 主从介绍
- MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的
- MySQL主从是基于binlog的,主上须开启binlog才能进行主从。
- 主从过程大致有 3 个步骤
1)主将更改操作记录到binlog里
2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里
3)从根据relaylog里面的sql语句按顺序执行
主上有一个log dump线程,用来和从的I/O线程传递binlog
从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句落地
- 两个场景:
1,从作为数据备份
2,不仅仅备份,主上写,从上读,减轻主的压力
17.2 准备工作
从机器上安装 mysql:
[root@alexis-02 src]# wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz
[root@alexis-02 src]# tar xvf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz
[root@alexis-02 src]# mv mysql-5.6.43-linux-glibc2.12-x86_64/ /usr/local/mysql
[root@alexis-02 mysql]# useradd mysql
[root@alexis-02 mysql]# mkdir /data/
[root@alexis-02 mysql]# mkdir /data/mysql/
[root@alexis-02 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/
[root@alexis-02 mysql]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/tmp/mysql.sock
[root@alexis-02 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@alexis-02 mysql]# vim /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data/mysql
[root@alexis-02 mysql]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS!
[root@alexis-02 mysql]# ps aux|grep mysqld
root 7488 0.1 0.1 113312 1616 pts/0 S 16:56 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/arslinux-02.pid
mysql 7652 8.7 45.1 1302736 449792 pts/0 Sl 16:56 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysql.log --pid-file=/data/mysql/arslinux-02.pid --socket=/tmp/mysql.sock
root 7676 0.0 0.0 112724 984 pts/0 R+ 16:57 0:00 grep --color=auto mysqld
[root@alexis-02 mysql]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6926/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 7061/master
tcp6 0 0 :::3306 :::* LISTEN 7652/mysqld
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::22 :::* LISTEN 6926/sshd
tcp6 0 0 ::1:25 :::* LISTEN 7061/master
[root@alexis-02 mysql]# chkconfig mysqld on
[root@alexis-02 mysql]#