博客地址
https://blog.csdn.net/richie696/article/details/114261284
1、解压msyql
tar xzvf
2、创建mysql数据目录
mkdir -p /usr/data/mysql/master/{data,file,logs}
3、创建mysql配置文件
vim /usr/data/mysql/master/file/my.cnf
[mysqld]
port=3306 # 端口
basedir=/usr/local/mysql # 二进制文件目录
datadir=/usr/data/mysql/master/data # 初始化数据目录
log_bin=/usr/data/mysql/master/logs/mysql-bin # binlog日志(必须设置id才可使用)
log_error=/usr/data/mysql/master/logs/mysql-error.log # 错误日志
pid_file=/usr/data/mysql/master/file/mysql.pid # pid文件(作用不明,不写会导致出错)
socket=/usr/data/mysql/master/file/mysql-3306.sock # socket文件
# 向错误日志写入空行(别问为什么,问就是不写会导致报错)
# [ >> 重定向意思,> 也行,反正错误日志没东西 ]
echo "" >> /usr/data/mysql/master/logs/mysql-error.log
4、 初始化数据库
/usr/local/mysql/bin/mysqld --initialize --basedir=/usr/local/mysql/ --datadir=/usr/data/mysql/master/data/
// 初始化密码
2022-04-13T02:27:18.776836Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: o;d/b><Vr2_N
5、创建mysql用户
useradd mysql
6、给与文件夹权限
chown -R mysql.mysql /usr/data/mysql # 修改数据目录权限
chown -R mysql.mysql /usr/local/mysql # 修改mysql文件目录权限
7、切换myusql用户,启动数据库
su mysql
/usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/data/mysql/master/file/my.cnf &
# 等待几秒钟回车即可,回车后不提示任何内容即为成功(回车后提示成功也是启动失败)
8、链接数据库
/usr/local/mysql/bin/mysql -uroot -p -S /mysql/master/file/mysql-3306.sock
9、更改密码
alter user 'root'@'localhost' identified by 'hellosxl';
10、刷新权限
flush privileges;
11、创建用户并授权,可以远程链接
create user rsthe@'%' identified by 'rsthe';
11.1、查询所有用户信息
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
11.2、授予所有权限
grant all privileges on *.* to rsthe@'%';
11.3、修改root远程连接
use mysql;
update user set host = '%' where user ='root';
flush privileges;
12、将数据库复制两份做从库
13、修改主库 my.cnf 文件
vim usr/data/mysql/master/file/my.cnf
# 设置server-id,唯一值,标识主机,必须与从库不一致
server-id=1
# 开启二进制日志,主库必须开启
log-bin=mysql-bin
# 自动删除2592000秒(30天)前的日志
# 8.0以前的版本中这个配置为expire_logs_days,单位为天
binlog_expire_logs_seconds=2592000
# binlog记录的模式
# statement模式不会记录每一条更改语句,节约资源但主从数据可能不一致
# row模式记录每一条更改的语句,日志量非常大
# mixed模式是前两者优点的综合,但日志结构较为复杂
binlog_format=mixed
#设置只记录binlog的库,如果全库,注释该配置
# binlog-do-db=demo
# 不同步哪些数据库
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
14、修改从库配置
# 设置server-id,唯一值,标识主机,必须与主库不一致
server-id=2
15、启动主从mysql服务
主库查询binLog日志信息
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000004 | 1048 | | | |
+------------------+----------+--------------+------------------+-------------------+
16、从库中配置需要连接的主库信息:登录MySQL客户端配置
命令:
change master to master_host='192.168.181.129', master_port=3306, master_user='rsthe', master_password='rsthe', master_log_file='mysql-bin.000004', master_log_pos=1048;
命令解释:
master_host='主服务器IP地址'
master_port=主服务器端口
master_user='用户名'
master_password='密码'
master_log_file='主库binlog日志文件名称'
master_log_pos=开始复制的索引
16、从库启动/关闭slave
start slave;
stop slave;
17、查看slave状态
show slave status \G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
上面两个选项都是yes表示启动成功
18、开启半同步复制
主库配置
需要给MySQL数据库安装semi插件。
install plugin rpl_semi_sync_master soname 'semisync_master.so';
show variables like '%semi%';
set global rpl_semi_sync_master_enabled = 1;
set global rpl_semi_sync_master_timeout = 1000;
查看安装结果。上面的第三步是开启semi插件,第四步是设置同步超时时长为1秒。
show variables like '%semi%';
主库配置基本结束。下面开始从库配置。
从库配置
给从库安装semi插件并启用。注意,主库和从库的插件不一样
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
set global rpl_semi_sync_slave_enabled = 1;
查看安装结果。
show variables like '%semi%';
将其他Slave节点按照同样方式进行配置即可。
配置完以后重启一下slave节点
start slave;
stop slave;