> 本文作者:丁辉 # 部署 Mysql 双主 [Mysql-Rpm文件下载](https://dev.mysql.com/downloads/repo/yum/) ## 部署 > 双节点都执行以下操作 1. 下载 Mysql Rpm 文件 ```bash yum install -y wget wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm ``` 2. 安装 MySQL ```bash yum install -y mysql80-community-release-el7-7.noarch.rpm yum -y install mysql-community-server --enablerepo=mysql80-community --nogpgcheck ``` 3. 启动 MySQL Server ```bash systemctl start mysqld systemctl enable mysqld systemctl status mysqld ``` ## 配置 1. 查看临时密码 ```bash grep 'temporary password' /var/log/mysqld.log ``` 2. 修改临时密码并配置允许远程登录 ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'password'; USE mysql; UPDATE user SET host = '%' WHERE user = 'root'; FLUSH PRIVILEGES; ``` ### Mysql 1号主节点配置 1. 停止数据库 ```bash systemctl stop mysqld ``` 备份并编辑配置文件 ```bash cp /etc/my.cnf /etc/my.cnf.bak vi /etc/my.cnf ``` ```bash [mysqld] pid-file=/var/run/mysqld/mysqld.pid socket=/var/lib/mysql/mysql.sock datadir=/var/lib/mysql log-error=/var/log/mysqld.log secure-file-priv=NULL # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # 服务端默认utf8编码 character-set-server=utf8mb4 # 默认存储引擎 default-storage-engine=INNODB # 主从配置 log-bin=binlog server-id=121 gtid-mode=on enforce-gtid-consistency=on log-slave-updates=on expire_logs_days=14 # Compatible with versions before 8.0 default_authentication_plugin=mysql_native_password skip-host-cache skip-name-resolve [client] #设置客户端编码 default-character-set=utf8mb4 [mysql] # 设置mysql客户端默认编码 default-character-set=utf8mb4 ``` 2. 重新启动 ```bash systemctl start mysqld ``` 3. 登录数据库授权 ```sql CREATE USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%'; flush privileges; SHOW MASTER STATUS; #此信息记录等会配置另外一台节点需要用 ``` ### Mysql 2号主配置 1. 停止数据库 ```bash systemctl stop mysqld ``` 备份并编辑配置文件 ```bash cp /etc/my.cnf /etc/my.cnf.bak vi /etc/my.cnf ``` ```bash [mysqld] pid-file=/var/run/mysqld/mysqld.pid socket=/var/lib/mysql/mysql.sock datadir=/var/lib/mysql log-error=/var/log/mysqld.log secure-file-priv=NULL # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # 服务端默认utf8编码 character-set-server=utf8mb4 # 默认存储引擎 default-storage-engine=INNODB # 主从配置 log-bin=binlog server-id=122 gtid-mode=on enforce-gtid-consistency=on log-slave-updates=on expire_logs_days=14 # Compatible with versions before 8.0 default_authentication_plugin=mysql_native_password skip-host-cache skip-name-resolve [client] #设置客户端编码 default-character-set=utf8mb4 [mysql] # 设置mysql客户端默认编码 default-character-set=utf8mb4 ``` 2. 重新启动 ```bash systemctl start mysqld ``` 3. 登录数据库授权 ```sql CREATE USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%'; flush privileges; SHOW MASTER STATUS; #此信息记录等会配置另外一台节点需要用 ``` ### Mysql 1号主节点配置 1. 开启同步 ```sql CHANGE MASTER TO MASTER_HOST='', #IP地址 MASTER_USER='slave', MASTER_PASSWORD='password', #密码 MASTER_PORT=3306, MASTER_LOG_FILE='binlog.000002', #节点2 binlog 信息 MASTER_LOG_POS=821; #节点2 log_pos信息 ``` 2. 开启主从同步 ```sql start slave; ``` 3. 查看同步状态 ```sql show slave status\G; ``` ### Mysql 2号主节点配置 1. 开启同步 ```sql CHANGE MASTER TO MASTER_HOST='', #IP地址 MASTER_USER='slave', MASTER_PASSWORD='password', #密码 MASTER_PORT=3306, MASTER_LOG_FILE='binlog.000002', #节点1 binlog 信息 MASTER_LOG_POS=821; #节点1 log_pos信息 ``` 2. 开启主从同步 ```sql start slave; ``` 3. 查看同步状态 ```sql show slave status\G; ``` ## Mysql 配置密码等级 ```bash set global validate_password.policy=0; set global validate_password.mixed_case_count=0; set global validate_password.number_count=0; set global validate_password.special_char_count=0; set global validate_password.length=3; ``` > 1.修改密码强度等级为0,即是LOW; > 2.修改密码至少要包含的大写字母和小写字母的个数为0; > 3.修改密码至少要包含的数字个数为0; > 4.修改密码至少要包含的特殊字符的个数为0; > 5.修改密码的长度最小个数为3;