mysql8主从搭建
在centos7上搭建mysql8主从集群(一主一从)
环境
master 192.168.1.2
slave 192.168.1.3
两台centos7已安装同版本mysql8
单机搭建参考 https://www.cnblogs.com/tangshow/p/15931001.html
搭建
修改主节点配置文件:(不用配置)
log_bin=1 (mysql8 默认开启,保存位置在data)
server_id=1(mysql8默认已设置1)
修改从节点配置文件
server_id=2 (与主节点id不一样就行)
主节点创建用户并设置权限:
> CREATE USER 'repl'@%' IDENTIFIED WITH mysql_native_password BY 'xxx';
> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
> flush privileges;
在主节点获取主节点当前binary log文件名和位置(position)
> SHOW MASTER STATUS;
在从节点设置参数:
> CHANGE MASTER TO
MASTER_HOST='192.168.1.2',
Master_Port: 3306
MASTER_USER='repl',
MASTER_PASSWORD='xxx',
MASTER_LOG_FILE='binlog.000003',#(SHOW MASTER STATUS显示的log名称)
MASTER_LOG_POS=819372; #(SHOW MASTER STATUS显示的位置)
在从节点开启主从同步
start slave;
在从节点查看主从同步状态:
show slave status\G;
查看主从同步状态
显示有错误时,stop slave;处理;start slave;(处理见err:a1,a2,a3)
重置从节点配置
先stop slave; 再reset slave all;用show slave status\G查看发现主从关系已彻底取消
然后执行 "#####在从节点设置参数“
正常状态信息
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event #等待master发生事件
Master_Host: 192.168.0.102 #同步master服务器IP地址
Master_User: repl #建立同步使用用户
Master_Port: 3306 #master服务器mysql使用端口
Connect_Retry: 60 #连接重拾时间
Master_Log_File: binlog.000025 #I/O线程当前正在读取的主服务器二进制日志文件的名称
Read_Master_Log_Pos: 15089 #本机I/O线程读取主服务器二进制日志位置
Relay_Log_File: mongodb3-relay-bin.000002 #SQL线程当前读取执行的中继日志文件的名称
Relay_Log_Pos: 2153 #SQL线程读取执行中继日志的位置
Relay_Master_Log_File: binlog.000025 #由SQL线程执行的包含多数近期事件的主服务器二进制日志文件的名称
Slave_IO_Running: Yes #I/O线程是否启动并成功连接到主服务器上
Slave_SQL_Running: Yes #SQL线程是否启动
Replicate_Do_DB: #设置从master服务器进行同步的数据库,通过replicate-do-db选项设置
Replicate_Ignore_DB: #设置不从master端进行数据同步的数据库,replicate-ignore-db选项设置
Replicate_Do_Table: #设置从master服务器进行同步的表,通过replicate-ignore-table选项设置
Replicate_Ignore_Table: #设置不从master端进行数据同步的表,replicate-ignore-table选项设置
Replicate_Wild_Do_Table: #告诉从服务器线程限制复制更新的表匹配指定的数据库和表名模式的语句。模式可以包含‘%’和‘_’通配符,与LIKE模式匹配操作符具有相同的含义。要指定多个表,应多次使用该选项,每个表使用一次。该选项可以跨数据库进行更新。请读取该选项后面的注意事项。例如:--replicate-wild-do-table=foo%.bar%只复制数据库名以foo开始和表名以bar开始的表的更新。
Replicate_Wild_Ignore_Table: #告诉从服务器线程不要复制表匹配给出的通配符模式的语句。要想忽略多个表,应多次使用该选项,每个表使用一次。该选项可以跨数据库进行更新。请读取该选项后面的注意事项。例如:--replicate-wild-ignore-table=foo%.bar%不复制数据库名以foo开始和表名以bar开始的表的更新。
Last_Errno: 0 #最近的一次错误码
Last_Error: #最近一次错误码的内容
Skip_Counter: 0 #最近被使用的用于SQL_SLAVE_SKIP_COUNTER的值,例如:SET GLOBAL SQL_slave_SKIP_COUNTER = n;
Exec_Master_Log_Pos: 15089 #SQL线程执行来自master的二进制日志最后一个事件位置
Relay_Log_Space: 2364 #所有原有的中继日志结合起来的总大小
Until_Condition: None #复制until条件,在stop slave,start slave(不带until)或server重启的时候会自动重置
Until_Log_File: #复制停止的文件名
Until_Log_Pos: 0 #复制停止的文件位置
Master_SSL_Allowed: No #是否使用SSL连接master,如果允许对主服务器进行SSL连接,则值为Yes。如果不允许对主服务器进行SSL连接,则值为No。如果允许SSL连接,但是从属服务器没有让SSL支持被启用,则值为Ignored。
Master_SSL_CA_File: #ssl agent文件ca-cert.pem的文件名,配置文件master-ca选项设置
Master_SSL_CA_Path: #ssl agent文件ca-cert.pem的路径名,配置文件ca-cert.pem选项设置
Master_SSL_Cert: #ssl 授权文件,配置文件master-cert选项设置
Master_SSL_Cipher: #ssl 加密算法,配置文件master-cipher选项设置
Master_SSL_Key: #ssl 密钥文件,配置文件master-key选项设置
Seconds_Behind_Master: 0 见最下方
Master_SSL_Verify_Server_Cert: No #是否检查master的授权文件
Last_IO_Errno: 0 #IO thread的上一次出错的错误号
Last_IO_Error: #IO thread的上一次出错的错误信息
Last_SQL_Errno: 0 #SQL thread的上一次出错的错误号
Last_SQL_Error: #SQL thread的上一次出错的错误信息
Replicate_Ignore_Server_Ids: #忽略复制服务器ID
Master_Server_Id: 1 #master 主机server ID
Master_UUID: 8a92a591-0ae4-11ea-a08b-000c29b94ad3
Master_Info_File: mysql.slave_master_info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
Master_public_key_path:
Get_master_public_key: 0
Network_Namespace:
1 row in set (0.00 sec)
ERROR:
No query specified
切换主从操作流程
确定所有从机执行了relay log中的全部更新 :Slave_SQL_Running_State: Slave has read all relay log
从机上停止slave服务,重置成主数据库:
stop slave;
reset master;(未开启bin-log会报错)
从机上添加具有replication权限的用户b2 然后
>SHOW MASTER STATUS;
然后配置另一台新从机