张家界网站建设企业,三网合一营销型全网站,企业网页建设公司联系电话,加盟网网站建设策划书1.理解MySQL主从复制原理。 2.完成MySQL主从复制。 1.理解MySQL主从复制原理。
1#xff09;、MySQL支持的复制类型 #xff08;1#xff09;、基于语句#xff08; statement #xff09;的复制 在主服务器上执行SQL 语句#xff0c;在从服务器上执行同样的语句。 My…1.理解MySQL主从复制原理。 2.完成MySQL主从复制。 1.理解MySQL主从复制原理。
1、MySQL支持的复制类型 1、基于语句 statement 的复制 在主服务器上执行SQL 语句在从服务器上执行同样的语句。 MySQL 默认采用基于语句的复制效率比 较高。 2、基于行 row 的复制 把改变的内容复制过去而不是把命令在从服务器上执行一遍。从MySQL 5.0 开始支持。 3、混合型 mixed 的复制 默认采用基于语句的复制一旦发现基于语句的无法精确复制时就会采用基于行的复制。 2 、为什么要做主从复制 灾备 数据分布 负载平衡 读写分离 提高并发能力 3、主从复制原理 主要基于MySQL 二进制日志 主要包括三个线程2 个 I/O 线程 1 个 SQL 线程 1 、 MySQL 将数据变化记录到二进制日志中 2 、 Slave 将 MySQL 的二进制日志拷贝到 Slave 的中继日志中 3 、 Slave 将中继日志中的事件在做一次将数据变化反应到自身 Slave 的数据库 主数据库有个bin-log二进制文件记录了所有增删改Sql语句。binlog线程从数据库把主数据库的bin-log文件的sql语句复制过来。io线程从数据库的relay-log重做日志文件中再执行一次这些sql语句。Sql执行线程 4、如何实现主从复制 在主服务器master 上 (1)、启用二进制日志 (2)、选择一个唯一的server-id (3)、创建具有复制权限的用户 在从服务器slave 上 1、启用中继日志 二进制日志可开启也可不开启 2、选择一个唯一的server-id 3、连接至主服务器并开始复制 2.完成MySQL主从复制。
1、主机环境 主节点 192.168.186.251 master 从节点 192.168.186.100 slave1 2、环境准备 关闭防火墙 [rootmaster ~]# systemctl disable firewalld 关闭selinux [rootmaster ~]# setenforce 0 时间同步 主、从服务器使用相同版本的mysql数据库 3、主节点配置
1、启用二进制日志 并为当前节点设置一个全局唯一的ID号然后创建目录修改权限
[rootmaster ~]# vim /etc/my.cnf
[mysqld]
log_bin /data/logbin/mysql-bin
server_id 1
[rootmaster ~]# mkdir /data
[rootmaster ~]# mkdir /data/logbin
[rootmaster ~]# chown mysql.mysql /data/logbin/2、重新启动mysql服务
[rootmaster ~]# systemctl restart mysqld(3)、查看/data/logbin/目录是否有数据
[rootmaster ~]# ls /data/logbin
mysql-bin.000001 mysql-bin.index(4)、登录mysql创建账号账号授权
[rootmaster ~]# mysql -uroot -p123456mysql5.7 [(none)]create user wp192.168.186.% identified by 123456;
Query OK, 0 rows affected (0.00 sec)mysql5.7 [(none)]grant replication slave on *.* to wp192.168.186.%;
Query OK, 0 rows affected (0.01 sec)mysql5.7 [(none)]show grants for rep192.168.186.%;
---------------------------------------------------------
| Grants for rep192.168.186.% |
---------------------------------------------------------
| GRANT REPLICATION SLAVE ON *.* TO rep192.168.186.% |
---------------------------------------------------------
1 row in set (0.00 sec)(5)、锁表设置只读查看主库状态
mysql5.7 [(none)]flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)mysql5.7 [(none)]show variables like %timeout%;
---------------------------------------
| Variable_name | Value |
---------------------------------------
| connect_timeout | 10 |
| delayed_insert_timeout | 300 |
| have_statement_timeout | YES |
| innodb_flush_log_at_timeout | 1 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| rpl_stop_slave_timeout | 31536000 |
| slave_net_timeout | 60 |
| wait_timeout | 28800 |
---------------------------------------
13 rows in set (0.00 sec)mysql5.7 [(none)]show master status;
------------------------------------------------------------------------------------------------------
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
------------------------------------------------------------------------------------------------------
| mysql-bin.000001 | 607 | | | 388ebd53-291b-11ee-b68c-000c29090543:1-3 |
------------------------------------------------------------------------------------------------------
1 row in set (0.00 sec)mysql5.7 [(none)]\q
Bye(6)、备份数据库数据
[rootmaster backup]# mysqldump -uwp -p -A -B | gzip /server/backup/mysql_bak.$(date %F).sql.gz
Enter password:
[rootmaster backup]# ll
total 4
-rw-r--r--. 1 root root 20 Jul 25 11:17 mysql_bak.2023-07-25.sql.gz4、从节点设置
1、设置全局唯一的ID号
[rootslave1 ~]# vim /etc/my.cnf[mysqld]
server_id25、在主节点将备份的数据复制到从节点上,并在从节点查看
master:[rootmaster ~]# scp /server/backup/mysql_bak.2023-07-25.sql.gz 192.168.186.100:/server/backup
The authenticity of host 192.168.186.100 (192.168.186.100) cant be established.
ECDSA key fingerprint is SHA256:ZGkVpFFM8KDH3SRgZmWUpDIlNK9DwqcdTAiGoyzM.
ECDSA key fingerprint is MD5:c2:93:1c:0a:8e:e1:4e:86:cc:90:78:5d:81:42:76:aa.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 192.168.186.100 (ECDSA) to the list of known hosts.
root192.168.186.100s password:
mysql_bak.2023-07-25.sql.gz 100% 20 21.8KB/s 00:00 slave1:
[rootslave1 ~]# ll /server/backup/
总用量 4
-rw-r--r-- 1 root root 20 7月 25 23:35 mysql_bak.2023-07-25.sql.gz
[rootslave1 ~]# cd /server/backup/
[rootslave1 backup]# gzip -d mysql_bak.2023-07-25.sql.gz
[rootslave1 backup]# ll
总用量 0
-rw-r--r-- 1 root root 0 7月 25 23:35 mysql_bak.2023-07-25.sql6、设定主从库同步
mysql change master to
MASTER_HOST192.168.186.251,
MASTER_PORT3306,
MASTER_USERwp,
MASTER_PASSWORD123456,
MASTER_LOG_FILEmysql-bin.000025,
MASTER_LOG_POS194;
7)、启动主从库同步开关
mysql start slave;
检查状态
mysql show slave status\G
*************************** 1. row ***************************Slave_IO_State: Master_Host: 192.168.186.251Master_User: rootMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000025Read_Master_Log_Pos: 194Relay_Log_File: slave1-relay-bin.000001Relay_Log_Pos: 4Relay_Master_Log_File: mysql-bin.000025Slave_IO_Running: YesSlave_SQL_Running: Yes