2021年10月16日15:38:04
自从大部分公司都习惯使用云服务器之后,经常就直接使用rds数据库了,数据库自己配置,做主从,已经真的好久没自己做了,回想起来基本从2014,15年就基本没做过了
这次配置之后发现很多变化,
mysql版本8.0.26 centos7.9 8.x因为redhat问题,不在是lts版本,centos steam版本是滚动发新版本,有可能有安全性问题,这里注意了
yum安装
在MySQL官网中下载YUM源rpm安装包:https://dev.mysql.com/downloads/repo/yum/
根据你的服务器版本,具体选择
下载 rpm包
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
安装
yum install mysql80-community-release-el7-3.noarch.rpm
yum数据更新 yum clean all yum makecache
查看是否mysql可以安装的版本
yum repolist all | grep mysql
禁用mysql8.0 yum-config-manager --disable mysql80-community
启动musql5.7 yum-config-manager --enable mysql57-community 查看repo文件内容
cat /etc/yum.repos.d/mysql-community.repo
安装数据库 yum install mysql-community-server
启动数据库 systemctl start mysqld.service
查看数据库 vi /var/log/mysqld.log [Server] A temporary password is generated for root@localhost: yLd%fk8ALKfu 这个是临时数据库密码
登录
mysql -uyida -p'yLd%fk8ALKfu'
添加开启启动
systemctl enable mysqld.service
查看用书授权
show grants for root
查看数据库server_id
show variables like 'server_id';
吧默认存储数据的迁移的数据盘,这个很重要
查看 mysql用户是否存在
id mysql
复制数据
cp -rf /var/lib/mysql /data/
修改用户
chown -R mysql:mysql /data/mysql/
重启一下mysql
编译mysql配置
vi /etc/my.cnf
[mysql] default-character-set=utf8 [mysqld] default-authentication-plugin=mysql_native_password port=8177 datadir=/data/mysql socket=/data/mysql/mysql.sock log-error=/data/mysql/mysqld.log pid-file=/data/mysql/mysqld.pid character-set-server=utf8 init_connect='SET NAMES utf8' default-storage-engine=InnoDB #binlog server-id=1001 log-bin=mysql_master_bin log-bin-index=mysql_master_bin.index binlog_format=MIXED expire_logs_days=180 max_binlog_size=100m binlog_cache_size=4m max_binlog_cache_size=512m gtid-mode=on log-slave-updates enforce-gtid-consistency binlog-ignore-db=sys binlog-ignore-db=mysql binlog-ignore-db=information_schema binlog-ignore-db=performance_schema binlog-do-db=test [client] port=8177 default-character-set=utf8 socket=/data/mysql/mysql.sock
说明版本
[mysql] #默认字符设置uft8,,注意这个不是utf8mb4 这个是引擎的的字符集 default-character-set=utf8 [mysqld] #默认授权加密方式 default-authentication-plugin=mysql_native_password #服务 port=8177 #数据库存储数据路径 datadir=/data/mysql #sock服务监听位置 socket=/data/mysql/mysql.sock #错误日志 log-error=/data/mysql/mysqld.log #pid文件 pid-file=/data/mysql/mysqld.pid #字符集 character-set-server=utf8 #初始化连接的设置的字符集 init_connect='SET NAMES utf8' #默认引擎 default-storage-engine=InnoDB #binlog #服务器分区ID,不能重复 默认0或者 server-id=1001 #bin日志设置 log-bin=mysql_master_bin #bin日志索引 log-bin-index=mysql_master_bin.index #日志格式,建议MIXED binlog_format=MIXED #日志过期日期 单位 expire_logs_days=180 #单个bin日志最大 max_binlog_size=100m #bin log缓存大小 binlog_cache_size=4m #最大bin log缓存大小 max_binlog_cache_size=512m #启用gtid类型,否则就是普通的复制架构 gtid-mode=on #slave更新是否记入日志 从库作为其他的主库需要设置 #log-slave-updates #强制GTID的一致性 enforce-gtid-consistency #binlog忽略不同步的数据库,注意这个功能可能存在问题 binlog-ignore-db=sys binlog-ignore-db=mysql binlog-ignore-db=information_schema binlog-ignore-db=performance_schema #执行同步的数据库,如果有新建数据库需要在这里新加入,直接复制一行 binlog-do-db=test [client] #mysql-client 客户端连接服务器端口 port=8177 #默认字符集 default-character-set=utf8 #连接的socket socket=/data/mysql/mysql.sock
注意以前的5.x,6.x和8.x参数区别有一些,无法完全参照,不是很详细的配置文件,仅供测试参考
从库和主库差不多的配置
[mysql] default-character-set=utf8 [mysqld] default-authentication-plugin=mysql_native_password port=8177 datadir=/data/mysql socket=/data/mysql/mysql.sock log-error=/data/mysql/mysqld.log pid-file=/data/mysql/mysqld.pid character-set-server=utf8 init_connect='SET NAMES utf8' default-storage-engine=InnoDB #binlog server-id=1002 log-bin=mysql_slave_bin log-bin-index=mysql_slave_bin.index binlog_format=MIXED expire_logs_days=180 max_binlog_size=100m binlog_cache_size=4m max_binlog_cache_size=512m gtid-mode=on log-slave-updates enforce-gtid-consistency binlog-ignore-db=sys binlog-ignore-db=mysql binlog-ignore-db=information_schema binlog-ignore-db=performance_schema binlog-do-db=test [client] port=8177 default-character-set=utf8 socket=/data/mysql/mysql.sock
创建专用的数据同步账号
mysql> CREATE USER 'repl'@'192.168.199.198' IDENTIFIED WITH mysql_native_password BY 'Ron_master_1'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.199.198';
查看主库binlog文件和偏移地址
show master status;
建议:在开始同步的之前,配置好主从数据库,最好重启一下服务器,看下重启时候服务是否正常,避免很多麻烦事情
设置从库同步
change master to master_host='192.168.199.198', master_user='repl', master_password='Ron_master_1', master_port=8177, master_log_file='mysql_master_bin.000009', MASTER_LOG_POS=196;
开启同步
start slave;