Centos 8.4 MySql 8.4 1主1从环境部署
一.换云源(根据自己需要考虑是否换源)
#阿里源 cd /etc/yum.repos.d/ curl -o /etc/yum.repos.d/CentOS-Base-Aliyun.repo http://mirrors.aliyun.com/repo/Centos-8.repo yum clean all yum makecache
二、安装 mysql
# 参考地址:https://blog.csdn.net/qq_34692500/article/details/139259947
cd /usr/local/src/ wget https://repo.mysql.com//mysql84-community-release-el8-1.noarch.rpm rpm -ivh mysql84-community-release-el8-1.noarch.rpm ##禁用原有库 yum module -y disable mysql #在禁用原生 MySQL 模块后,确认 MySQL 8.4 社区版存储库已启用。你可以通过以下命令查看可用的存储库: yum repolist all | grep mysql #安装 MySQL 8.4 社区服务器 yum install -y mysql-community-server
#1.创建存储目录
mkdir /data/opt cd /data/opt mkdir mysql cd /data/opt/mysql mkdir binlog mkdir datadir mkdir log chmod -R 755 /data/opt/mysql chown -R mysql:mysql /data/opt/mysql
#2.修改配置文件
master vim /etc/my.conf
datadir=/data/xxx/mysql/datadir socket=/var/lib/mysql/mysql.sock log-error=/data/xxx/mysql/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid #设置端口 port = 3306 #忽略大小写 lower_case_table_names = 1 ## 设置server_id,同一局域网中需要唯一 server_id=101 ##指定不需要同步的数据库每个in成 binlog_ignore_db=mysql binlog_ignore_db=information_schema binlog_ignore_db=performance_schema ## 开启二进制日志功能 log_bin = mysql-bin log_bin_index = /data/xxx/mysql/binlog/binlog.index ## 设置二进制日志使用内存大小(事务) binlog_cache_size=1M ## 设置使用的二进制日志格式(mixed,statement,row) binlog_format=mixed #slave_skip_errors=1062 ## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。 ## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一 innodb-buffer-pool-size = 80M character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci default-time-zone = +8:00
slave vim /etc/my.conf (若 slave 有转换成 master 的需求,则参考 master 的 my.conf)
datadir=/data/xxx/mysql/datadir socket=/var/lib/mysql/mysql.sock log-error=/data/xxx/mysql/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid #设置端口 port = 3306 # 服务器唯一id,每台服务器的id必须不同,如果配置其他从机,注意修改id server-id=103 innodb-buffer-pool-size=80M character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci default-time-zone=+8:00 lower-case-table-names=1
#3.启动服务
#启动mysql /bin/systemctl restart mysqld.service /bin/systemctl status mysqld.service /bin/systemctl stop mysqld.service
#4.设置初始密码
#显示mysql的随机密码 grep 'temporary password' /data/opt/mysql/log/mysqld.log #运行 MySQL 安装安全脚本 mysql_secure_installation
#5.创建同步账号(建议主从都创建,便于后续主从切换操作)
create user 'username'@'%' identified by 'password'; GRANT REPLICATION SLAVE ON *.* TO 'username'@'%'; flush privileges;
#6. master 查看服务器日志状态
SHOW BINARY LOG STATUS;
#7.配置 slave 同步线程
# 注意 SOURCE_LOG_FILE 和 SOURCE_LOG_POS 通过 master 执行 SHOW BINARY LOG STATUS; 获取 CHANGE REPLICATION SOURCE TO SOURCE_HOST='172.*.*.*', SOURCE_LOG_FILE='mysql-bin.000001', SOURCE_LOG_POS=158, SOURCE_PORT=3306, SOURCE_USER='username', SOURCE_PASSWORD='pasword';
#8.开启 Slave 同步
START REPLICA;
#9.查看复制状态,状态为yes 即可
SHOW REPLICA STATUS\G;
注意:Replica_IO_Running 为 Connecting 时,用同步账号 Slave 连接 Master,然后停止同步线程,重新启动
mysql -uusername -p -P 3306 -h 172.*.*.*
到此配置完成,可以 master 操作数据库和表,看看 slave 是否同步数据。
注意:初始化备份数据之前,记得把 master 锁定只读。防止操作过程有进程读写数据导致 position 变化