MySQL简要记录

零、前言

默认以5.7最新版本及8.0版本为模板编写,涉及5.7-的内容部分会提及

一、安装

传送门MySQL :: MySQL Community Downloads https://dev.mysql.com/downloads/repo/apt/)

yum源 :https://dev.mysql.com/downloads/repo/yum/

例如:当前rpm文件为 mysql80-community-release-el8-3.noarch.rpm

rpm -ivh mysql80-community-release-el8-3.noarch.rpm

①获取当前可获取mysql版本

yum check-update mysql

②选择包,安装

#过滤mysql8.0包
yum list | grep mysql80
#安装mysql-server
yum install mysql-community-server.x86_64

①启动并设置开机自启

systemctl start mysqld
systemctl enable mysqld

②基本命令

检验状态: mysql status
启/停应用
#停止运行mysql
mysql stop
#启动mysql
mysql start

apt源:https://dev.mysql.com/downloads/repo/apt/

例如:当前deb文件为 mysql-apt-config_0.8.22-1_all.deb

sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb

①获取最新版本讯息

sudo apt update

②安装

sudo apt install mysql-server

①加固mysql

通常用于加强密码安全性,同时可以设置mysql的root密码

sudo mysql_secure_installation

②基本命令:

校验状态:systemctl status mysql
启/停应用:
#####启动应用#######
#1、service 启动
service mysql start
#2、safe_mysqld 启动,官方推荐的启动方式(通常用于调试阶段)
mysqld_safe
亦或:mysqld_safe --defaults-file=my.cnf > mysqld.log 2>&1 &

######关闭应用######
service mysql stop

③设置开机自启

sudo update-rc.d -f mysql defaults

二、偷懒备份脚本

下面英文都是为了装逼,简要来说就是分了三个部分

①备份所有数据结构和数据

②备份所有数据

③备份数据结构

#!/bin/bash
# mysql locate here
# just use the format like example that can be backup the db;
# ./backup.sh demo
# extra param is model :
#1、 default is meaning to backup all struct and data
# eg:    ./backup.sh demo 
#2、 data is meaning to keep the data only
# eg:    ./backup.sh demo data
#3、struct is meaning to keep the struct only
# eg:    ./backup.sh demo struct
excute_db=$1
excute_model=$2
mysql_home=/usr/local/mysql/bin/
base_home=/home/backup/
username=root
password=root
dbadress=localhost
# get current datetime
cur=$(date +%Y%m%d)
# some error maybe occur in working procedure and we can using --skip-lock-tables to fix it
# like: ${mysql_home}/mysqldump -h${dbadress}  -u${username} -p${password}  ${excute_db} --skip-lock-tables > ${base_home}/${cur}/${excute_db}_${cur}.sql




defaultKeep(){
 echo "now is backup all struct and data : ${excute_db}"
 ${mysql_home}/mysqldump -h${dbadress}  -u${username} -p${password}  ${excute_db} > ${base_home}/${cur}/${excute_db}_${cur}.sql
}

customKeep(){
 if [ "$1" = "data" ];then
   echo "backup data only: ${excute_db}"
   ${mysql_home}/mysqldump  -h${dbadress} -u${username} -p${password} -t ${excute_db} > ${base_home}/${cur}/${excute_db}_${cur}_dataOnly.sql
 elif [ "$1" = "struct" ];then
   echo "backup struct only: ${excute_db}"
   ${mysql_home}/mysqldump  --opt -h${dbadress} -u${username} -p${password}  -d ${excute_db} > ${base_home}/${cur}/${excute_db}_${cur}_structOnly.sql
 else 
   defaultKeep
 fi
}


folderCreatedByDate(){

echo -e "current would be created folder is ${cur}, the mysql_home is ${mysql_home}\n"

if [ ! -d "./${cur}" ]; then
  mkdir "./${cur}"
else
  echo "folder ./${cur} has been created" 
fi

}

backupSelector(){
echo -e "\n ready to backup ${excute_db}"
folderCreatedByDate
if [ $2 ];then
 customKeep $2
else
 defaultKeep;
fi
}

if [ $1 ];then
  backupSelector $1 $2
else
  echo -e "\n you can just use the format like example that can be backup the db;
 eg: ./backup.sh demo\n
 extra param is model :
1、 default is meaning to backup all struct and data
 eg:    ./backup.sh demo \n
2、 data is meaning to keep the data only
 eg:    ./backup.sh demo data \n
3、struct is meaning to keep the struct only
 eg:    ./backup.sh demo struct \n"
fi

三、用户授权相关操作

Tips:整体上建议先有库再授权,否则不生效

1、创建用户

整体上创建用户需要注意的部分是是否需要限制访问地址

# 创建用户,不限制访问ip地址
create user 'demo' @'%' identified by "demo_123"
#创建用户,限定ip,例:192.168.110.22
create user 'demo' @'192.168.110.22' identified by "demo_123"

2、授权给用户

1、通常可赋予的权限如下,但是若是猛点,可以直接all (建议先有库后授权)

①Alter: 修改已存在的数据表(例如增加/删除列)和索引。
②Create: 建立新的数据库或数据表。
③Delete: 删除表的记录。
④Drop: 删除数据表或数据库。
⑤INDEX: 建立或删除索引。
⑥Insert: 增加表的记录。
⑦Select: 显示/搜索表的记录。
⑧Update: 修改表中已存在的记录。

2、grant 期间也可以限定ip赋予权限

#常用授权用于基于增/删/查/更新即可
grant select,insert,update,delete on *.* to "demo"@"%";

#其实不是很推荐,所有权限all put
grant all on *.* to "demo"@"%";

#刷新权限
flush privileges;
#查看权限,demo为用户名
show grants for demo;

3、关于编码相关

主要为兼容繁体等内容

my.cnf设置

# 客户端默认字符集合
default-character-set = utf8mb4 
# 服务端使用的字符集默认为8比特编码
character-set-server=utf8mb4

基本上 default-character-set 约等于下面表内的都设置了

系统变量描述
character_set_client(客户端来源数据使用的字符集)
character_set_connection(连接层字符集)
character_set_database(当前选中数据库的默认字符集)
character_set_results(查询结果字符集)
character_set_server(默认的内部操作字符集)

万一没设置好字符集的补救方案

如果时间相关充裕,建议重建库构建

修改数据库编码

ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
// COLLATE = utf8mb4_unicode_ci; 字符集可以不加

# 修改完可以使用如下命令检查修改結果:
show variables like 'character_set_database';

②修改数据表编码

alter table table_name character set utf8mb4 collate utf8mb4_unicode_ci
// COLLATE utf8mb4_unicode_ci; 字符集可以不加

#修改完可以使用如下命令检查修改数据表的結果:
show create table table_name;

③更新数据列编码

alter table <表名> change <字段名> <字段名> <类型> character set utf8mb4;

#检查方法
show full columns from <表名>

四、其他配置参数

参考讯息:

8.0版本:MySQL :: MySQL 8.0 Reference Manual :: 5.1.8 Server System Variables

5.7版本:MySQL :: MySQL 5.7 Reference Manual :: 5.1.7 Server System Variables

1、Client

针对客户端访问部分内容配置

属性名参考默认值(5.7)参考默认值(8.0)备注
port33063306客户端连接服务器端时使用的端口号
socket/tmp/mysql.sock/tmp/mysql.sock客户端套接字文件所在目录
default-character-setutf8utf8mb4客户端字符集
no-auto-rehashOFFOFF禁用自动重新补全(就像linux里面tab补全一样的),会加快启动效率,默认是开启的

2、mysqlId

针对mysql应用

①通用配置

属性名参考默认值(5.7)参考默认值(8.0)备注
datadir/var/lib/mysql/var/lib/mysql数据库文件默认地址
basedir若非压缩包,可以忽略
port33063306服务端占用的端口号
server-id设置主从时有用
socket/var/run/mysql/mysql.sock/var/run/mysqld/mysql.sock服务端套接字文件所在目录
skip-external-locking开启开启每个进程若要访问数据表,则必须等待之前的进程完成操作并解除锁定。(仅影响MyISAM,若关闭注释即可)
character-set-servelatin1utf8mb4‎服务器默认字符集
default-storage-engineInnoDBInnoDB设置默认的引擎,不表明引擎创库表的默认引擎
thread_stack256KB8.0.27+:1024KB;8.026-:280KB,线程堆栈大小,默认64位,跟着自动配置即可
1、innodb配置
属性名参考默认值(5.7)参考默认值(8.0)备注
innodb_buffer_pool_size128MB128MB缓冲池大小,提高查询效率
innodb_data_home_dir通常与datadir一致通常与datadir一致记得尾部增加斜杠
innodb_data_file_pathibdata1:12M:autoextendibdata1:12M:autoextend定义系统表空间数据文件的名称、大小和属性,格式file_name:file_size[:autoextend[:max:max_file_size]]
innodb_thread_concurrency00定义允许的最大线程数,0为无限制,通常根据并发数对业务影响,以10为单位慢慢调整即可。
innodb_flush_log_at_trx_commit11‎默认设置为 1 是完全符合 ACID 所必需的。日志在每次事务提交时写入并刷新到磁盘。‎ ‎如果设置为 0,则每秒将日志写入磁盘并刷新一次。尚未刷新其日志的事务可能会在崩溃中丢失。‎ ‎如果设置为 2,则在每次事务提交后写入日志,并每秒刷新一次到磁盘。尚未刷新其日志的事务可能会在崩溃中丢失。‎ ‎对于设置 0 和 2,不能 100% 保证每秒一次刷新。由于 DDL 更改和其他内部活动导致独立于‎‎innodb_flush_log_at_trx_commit‎‎设置刷新日志,刷新可能会更频繁地发生,有时由于计划问题而降低刷新频率。如果每秒刷新一次日志,则崩溃时最多可能会丢失一秒钟的事务。如果刷新日志的频率高于或低于每秒一次的频率,则可能丢失的事务量会相应地变化。‎
innodb_log_buffer_size16MB16MB写入日志的缓冲区大小,根据事务可以酌情减少
innodb_log_file_size48MB48MB推荐值为256MB,理论上崩溃恢复1G约等于3分钟左右,这个值相对合适
innodb_log_files_in_group22以环型方式(circular fashion)写入文件。根据推荐数值 3 较为合适
innodb_log_group_home_dir用于恢复数据的日志文件的路径,可以定义一个适合的位置
innodb_max_dirty_pages_pct7590控制脏页百分比
innodb_lock_wait_timeout5050事务等待获取资源等待的最长时间,单位(秒)
2、主从配置

参考地址: MySQL :: MySQL 8.0 Reference Manual :: 13.4.2.1 CHANGE MASTER TO Statement

属性名参考默认值(5.7)参考默认值(8.0)备注
master-host主机ip
master-user用于连接主机的用户名
master-password用于连接主机的用户名对应密码
master-port用于连接主机的端口号
replicate-do-db指定数据库名
master-connect-retry6060重连时间,单位:秒
slave-net-timeout6060重连等待连接时间,单位:秒 ,从8.0.26, replica-net-timeout
log-slave-updatesOFFOFF
从8.0.26, use log_replica_updates
‎副本服务器从源服务器接收的更新是否应记录到副本自己的二进制日志中
relay-log中继日志路径,同步日志存放地方,eg:/var/mysql/slave/mysql-relay-bin
relay-log-indexrelaylog日志的索引文件,里面记录了所有当前有效的relaylog日志文件列表。eg:/var/mysql/slave/mysql-relay-bin.index
slave_load_tmpdir从8.0.26,use log_replica_updates复制副本在其中创建临时文件的目录,若未设置,会读取tmpdir参数
‎‎slave_compressed_protocolOFFreplica_compressed_protocol(8.0.26版本后使用这个参数名)使用源/副本连接协议的压缩,1为开启,默认不启用(建议开启)
slave-skip-errorsOFF8.0.26开始,使用replica_skip_errors‎出现错误时忽略,以英文逗号分隔
all,所有错误ddl_exist_errors ,ddl的所有错误1007:数据库已存在,创建数据库失败
1008:数据库不存在,删除数据库失败
1050:数据表已存在,创建数据表失败
1051:数据表不存在,删除数据表失败
1054:字段不存在,或程序文件跟数据库有冲突
1060:字段重复,导致无法插入
1061:重复键名
1068:定义了多个主键
1094:位置线程ID
1146:数据表缺失,请恢复数据库
1053:复制过程中主服务器宕机
1062:主键冲突 Duplicate entry

②日志方面配置

可以参详的地址:MySQL :: MySQL 5.7 Reference Manual :: 5.4 MySQL Server Logs

整体日志可分为六个类别

类型类型描述
Error log启动、运行或停止等错误日志
General query log已建立的客户端连接和从客户端收到的查询语句
Binary log更改数据的语句(也用于复制)
Relay log从复制源服务器接收到的数据更改
Slow query log执行时间超过long_query_time秒的查询
DDL log (metadata log)由DDL语句执行的元数据操作
属性名参考默认值(5.7)参考默认值(8.0)备注动态
log-short-formatOFFOFF开启后基本上时间错和非必要讯息都会隐藏
skip-external-locking开启开启每个进程若要访问数据表,则必须等待之前的进程完成操作并解除锁定。(仅影响MyISAM,若影响关闭注释即可)
log-error/var/log/mysqld.log/var/log/mysqld.log‎错误日志包含 ‎‎mysqld‎‎ 启动和关闭时间的记录。它还包含诊断消息,如在服务器启动和关闭期间以及服务器运行时发生的错误、警告和注释。例如,如果‎‎mysqld‎‎注意到需要自动检查或修复表,它会将消息写入错误日志。‎
general-log00所有查询日志功能【建议调试时才开】
general_log_file11日志存放地址,依赖于general-log,当其为1时实际生效
log-bin通常需要配主从必备,若不配置则不启用,参数内容为存放路径
max_binlog_size1G1G单个日志文件最大容量·
sync_binlog11‎sync_binlog=0‎‎:禁用 MySQL 服务器将二进制日志同步到磁盘。相反,MySQL服务器依赖于操作系统不时将二进制日志刷新到磁盘,就像它对任何其他文件所做的那样。此设置提供最佳性能,但在发生电源故障或操作系统崩溃时,服务器可能已提交尚未同步到二进制日志的事务。‎ ‎sync_binlog=1‎‎:启用在提交事务之前将二进制日志同步到磁盘。这是最安全的设置,但由于磁盘写入次数增加,可能会对性能产生负面影响。如果发生电源故障或操作系统崩溃,二进制日志中缺少的事务仅处于就绪状态。这允许自动恢复例程回滚事务,从而保证二进制日志中不会丢失任何事务。‎ ‎sync_binlog=‎*‎N‎*‎,其中 ‎*‎N‎*‎ 是 0 或 1 以外的值:收集二进制日志提交组后,二进制日志将同步到磁盘。如果发生电源故障或操作系统崩溃,服务器可能已提交尚未刷新到二进制日志的事务。由于磁盘写入次数增加,此设置可能会对性能产生负面影响。值越高,性能越高,但数据丢失的风险也会增加。‎N
relay-log从复制源服务器接收到的数据更改日志路径
max_relay_log_size00中继日志最大容量,也就是没有超过单个日志时的中继日志容量
slow_query_log00是否启用慢查询日志,1为启用,0为禁用
slow_query_log_file慢查询日志存放路径
long_query_time1010超过多少秒会被定义为慢查询

③优化配置

属性名参考默认值(5.7)参考默认值(8.0)备注myisam独有
key_buffer_size8M8M只对MyISAM表起作用5.7版本之后默认临时存储INNODB引擎,可以忽略这个参数(32位最大4g,默认8m,官方建议为总内存的25%)
max_allowed_packet4M64M请求包的最大大小以及服务所能处理的最大的请求大小
table_definition_cache400 + (table_open_cache / 2)MIN(400 + table_open_cache / 2, 2000)缓存表数,默认不配置,等其自适应即可
sort_buffer_size256KB256KB每个会话排序所需缓冲区,官方建议在256KB ~ 2M之间,若传输量大则忽略
read_buffer_size128KB128KB查询表的缓存区,通常根据最大数据量分配2M左右即可
read_rnd_buffer_size256KB256KBsort查询后使用的读入缓存,建议与sort_buffer_size一致
myisam_sort_buffer_size8M8M对排序索引操作时分配的缓冲区大小,普通查询也涵盖
thread_cache_size8 + (max_connections / 100)8 + (max_connections / 100)服务器缓存多少个线程以供重用
query_cache_size1M1M查询缓存大小(根据实际情况调整),8.0.3之后版本已经被去除
skip_name_resolve禁用域名解析,默认不开启,建议开启
lower_case_table_names0(unix),1(windows),2(macOs)0(unix),1(windows),2(macOs)表名是否区分大小写,1则忽略大小写
max_connections100100允许的同时客户的数量,默认数值是100,理论上默认500即可满足一般需求
back_log50 + (max_connections / 5)建议参考5.7版本暂时停止回答新请求之前,短时间内可以被存在堆栈中连接数量
open_files_limit50004000可以参考ulimit -n设置,但是设置65536就好
explicit_defaults_for_timestampOFFOFF在默认情况下,如果timestamp列没有显式的指明null属性,那么该列会被自动加上not null属性(而其他类型的列如果没有被显式的指定not null,那么是允许null值的),如果往这个列中插入null值,会自动的设置该列的值为current timestamp值。
max_heap_table_size16MB16MB并发较大的话,可以适当提交以增加效率

④对应超时相关配置

属性名参考默认值(5.7)参考默认值(8.0)备注
connect_timeout1010连接应用超时时间,建议设置为N分钟
interactive_timeout2880028800交互连接上可以等待行动的秒数,建议酌情设置为数分钟
wait_timeout2880028800等待连接后不操作的秒数,然后断开,建议酌情设置为数分钟
expire_logs_days00‎自动删除二进制日志文件的天数。默认值为 0,表示‎‎“‎‎无自动删除”

⑤版本中过期配置

一个经典问题,涉及某些原因(你懂的),8.0.26后面涉及slave都会变成replica,大都这样基本解决

属性名参考默认值(5.7)参考默认值(8.0)备注
query-cache-type5.7.20开始弃用MySQL 8.0中已删除查询缓存类型
query_cache_size1M8.0.3之后版本已经被去除查询缓存大小
slave_compressed_protocolOFFreplica_compressed_protocol(8.0.26版本后使用这个参数名)使用源/副本连接协议的压缩,1为开启,默认不启用(建议开启)
slave-skip-errorsOFF8.0.26开始,使用replica_skip_errors‎出现错误时忽略,以英文逗号分隔
all,所有错误ddl_exist_errors ,ddl的所有错误1007:数据库已存在,创建数据库失败
1008:数据库不存在,删除数据库失败
1050:数据表已存在,创建数据表失败
1051:数据表不存在,删除数据表失败
1054:字段不存在,或程序文件跟数据库有冲突
1060:字段重复,导致无法插入
1061:重复键名
1068:定义了多个主键
1094:位置线程ID
1146:数据表缺失,请恢复数据库
1053:复制过程中主服务器宕机
1062:主键冲突 Duplicate entry
log-slave-updatesOFFOFF
从8.0.26, use log_replica_updates
‎副本服务器从源服务器接收的更新是否应记录到副本自己的二进制日志中
slave_load_tmpdir从8.0.26,use log_replica_updates复制副本在其中创建临时文件的目录,若未设置,会读取tmpdir参数

3、mysqldump

属性名参考默认值(5.7)参考默认值(8.0)备注
quickOFFOFF对于转储大型表很有用。它强制‎‎mysqldump‎‎从服务器中一次一行地检索表的行,而不是检索整个行集并在写出之前将其缓冲到内存中。(使用时直接配置即可,不需要配置值)
max_allowed_packet4MB4MB限制一个数据包或任何生成/中间字符串的最大大小(通常归类为通用配置,但是习惯放在这个下面)

五、常规操作

1、关于大小写敏感处理

实际上就是参数lower_case_table_names 参数
1- 忽略大小写,0 - 默认值,区分大小写
这里默认为yum/apt安装的默认目录,故数据目录为:/var/lib/mysql

①停止MySQL

  systemctl stop mysqld

②删除数据目录内容

即删除 /var/lib/mysql 目录下的内容
(这里必然是要备份的,不备份的话,这我就没话说了)

③在MySQL配置文件( /etc/my.cnf )中添加 lower_case_table_names=1

④重新启动 MySQL

会自动重新初始化的。

  systemctl start mysqld

⑤检查是否生效

若 为如下值,建议重新查找配置文件
±-----------------------±------+
| Variable_name | Value |
±-----------------------±------+
| lower_case_file_system | OFF |
| lower_case_table_names | 0 |
————————————————

show variables like '%lower%'

2、主从配置

可参考 MySQL :: MySQL 8.0 Reference Manual :: 17 Replication

实际上整个复制过程是基于二进制日志文件去进行处理配置,所以务必源数据库(也就是所谓主数据库)必须要开启 log-bin

一、源/主库配置

默认目录/etc/my.cnf

(1)必要配置
参数名称说明缺省值
server-id必须唯一,用作交互之间的mysql机器(取值1 到 232 − 1,0会拒绝任意源连接及被连接)1
server_uuid若为同一个mysql全量复制安装,需要变更此处,否则会直接中断报错(data_dir/auto.cnf)自动生成
log-bin设置了log-bin目录即可,用于存放日志ON
(2)参考建议
参数名称取值默认值说明
innodb_flush_log_at_trx_commit11建议是基于事务级别保存(但业务量不大可以设置为0)
sync_binlog11在提交事务之前将二进制日志同步到磁盘(但增加磁盘消耗,非极其重要的还是可以不开)
binlog_formatmixedrow1、statement模式 不会记录每一条更改语句,节约资源但主从数据可能不一致 2、 row模式 记录每一条更改的语句,日志量非常大 3、 mixed模式 是前两者优点的综合,但日志结构较为复杂
binlog-do-db数据库名-可以限定只同步特定,若需要多个配置,重复此行
binlog-ignore-db数据库名-可以限定不同步特定,若需要多个配置,重复此行
(3)创建复制账户

其实这里主要是强调仅作复制权限的用户 ,涉及 REPLICATION SLAVE,当然也可以直接用其他用户。

username: copy

password:password

权限说明:

① replication client ,用于调用 show slave status 查看从库

② replication slave ,用于允许同步状态(必须

 CREATE USER 'copy'@'%'  IDENTIFIED BY 'password';
# 单纯同步
 GRANT REPLICATION SLAVE ON *.* TO 'copy'@'%';
#如果想看从库甚么水平
 GRANT REPLICATION SLAVE,replication client  ON *.* TO 'copy'@'%';
flush privileges;

二、从库配置

(1)必要配置
参数名称说明缺省值
server-id必须唯一,用作交互之间的mysql机器(取值1 到 232 − 1,0会拒绝任意源连接及被连接)1
(2)参考建议
参数名称取值默认值说明
replicate-do-db数据库名-可以限定只同步特定,若需要多个配置,重复此行
replicate-ignore-db数据库名-可以限定不同步特定,若需要多个配置,重复此行

三、迁移操作

(1)同步复制节点(非必要,但建议)

主要为了配合第二步操作,设置同步节点,保证能从正确节点同步(当然,从0开始复制就可以忽略了

示例账户

username:demo

# 通过执行语句获取到demo数据库
mysqldump -udemo -p --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=2 demo > /demo.sql

#获取log-bin 的节点文件和日志pos,用于方便同步讯息的节点。 通常由两种方式可以获取到第二步的 master_log_file & master_log_pos 讯息

cat demo.sql | grep CHANGE
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000016', MASTER_LOG_POS=157;

关于更多mysqldump属性细节可参考: [MySQL :: MySQL 8.0 Reference Manual :: 4.5.4 mysqldump — A Database Backup Program](

参数名称解释说明
skip-lock-tables跳过锁表,因为默认会锁的,期间可能导致业务出现问题
single-transaction此选项将事务隔离模式设置为 可重复读取 ,避免影响其他应用程序
flush-logs转储的时候会刷新一个新的log-bin文件(RELOAD privilege)
hex-blob使用十六进制表示法转储二进制列(保证数据的一致性,主要是避免转码出问题)
master-data2会将转储讯息和log-bin讯息也列入,方便我们配置主从时寻找节点(参考master-data取值
(2)配置主从方式

其实也是属于从库的配置内容,只不过为了统一说明,拉到这里

(1.1)配置文件方式
参数名称说明缺省值
master_port必须唯一,用作交互之间的mysql机器(取值1 到 232 − 1,0会拒绝任意源连接及被连接)1
master_user第一步主库设置时设置的账户
master_password第一步主库设置时设置的账户对应的密码
master_log_filelog-bin的文件名,通常为开始节点(建议通过第一步获取的内容)
master_log_pos对应log-bin读取到的定位点(建议通过第一步获取的内容)
(1.2)命令行运行方式
change master to master_host='master ip',
master_port=3306,
master_user='copy',
master_password='password',
master_log_file='mysql-bin.000016',
master_log_pos=157;
(3)相关命令

Both Slave_IO_Running & Slave_SQL_Running was work when value is yes

启动关闭主从状态

start slave 
stop slave

查看主库状态

show master status\G

查看从库状态

show slave status\G

判断完全同步

* Master_Log_File 和 Relay_Master_Log_File 所指向的文件必须一致
* Relay_Log_Pos 和 Exec_Master_Log_Pos 位置也要一致才行
* Slave_SQL_Running_State: 显示为wait 中继日志的sql语句已经全部执行完毕
(4)执行异常

①Authentication plugin ‘caching_sha2_password’ reported error

该插件发现连接未加密,因此需要使用RSA加密来传输密码。但是,服务器不会将公用密钥发送给客户端,并且客户端未提供公用密钥,因此它无法加密密码并且连接失败

# 建议在连接前增加参数 --get-server-public-key  获取一次公钥先。
mysql -u copy -p -h localhost -P3306 --get-server-public-key

四、复制安全性

这里主要由于实际应用的基于 证书密钥 的情况,再次记录官方操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值