系统版本: CentOS 7.6
关闭: selinux、firewalld
环境前提: 卸载系统自带的MariaDB #yum remove -y mariadb*
设备:
MySQL主库 192.168.1.170
MySQL从库 192.168.1.171
[第一部分: 主、从暂时配置一样]
一、主、从库 都执行 rz 命令上传MySQL5.7.18 至 /opt/ 目录下
rz、、、省略
二、主、从库 都执行解压命令
tar -xvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
三、主、从库都执行修改目录名命令
mv /usr/local/mysql-5.7.18-linux-glibc2.5-x86_64/ /usr/local/mysql
四、主、从库都执行创建用户组、用户主
groupadd mysql
useradd -r -g mysql mysql
五、主、从库都执行数据库的配置文件
cat > /etc/my.cnf <<EOF
[mysqld]
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/usr/local/mysql/logs/error.log
pid-file=/usr/local/mysql/mysql.pid
[client]
socket=/usr/local/mysql/mysql.sock
EOF
六、创建配置文件指向的目录和文件
mkdir -p /usr/local/mysql/data/
mkdir -p /usr/local/mysql/logs/
touch /usr/local/mysql/logs/error.log
七、主、从都执行 授权
chown -R mysql:mysql /usr/local/mysql/
chown -R mysql:mysql /etc/my.cnf
八、安装
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
九、安全加固
/usr/local/mysql/bin/mysql_ssl_rsa_setup --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
十、拷贝启动脚本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
十一、修改启动脚本文件
sed -i '46c basedir=/usr/local/mysql' /etc/init.d/mysqld
sed -i '47c datadir=/usr/local/mysql/data' /etc/init.d/mysqld
sed -i '63c mysqld_pid_file_path=/usr/local/mysql/data/mysqld.pid' /etc/init.d/mysqld
十二、启动一下试试
/etc/init.d/mysqld start
十三、设置软连接 直接敲mysql可以调用命令登录
ln -s /usr/local/mysql/bin/* /usr/local/sbin/
十四、退出到系统层面加-e参数免交互式修改密码
mysql -e "use mysql;alter user 'root'@'localhost' identified by 'Apeng12345.';"
十五、加入到 systemctl 命令中
cat > /usr/lib/systemd/system/mysqld.service <<EOF
[mysqld]
[Unit]
Description=MySQL
SourcePath=/etc/init.d/mysqld
Before=shutdown.target
[Service]
User=mysql
Type=forking
ExecStart=/etc/init.d/mysqld start
ExecStop=/etc/init.d/mysqld stop
[Install]
WantedBy=multi-user.target
EOF
十六、重启DB
systemctl restart mysqld
[第二大部分:]
一、修改主库的配置文件
[root@localhost ~]# cat /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
symbolic-links=0
#master and slave
log-bin=mysql-bin-master #启用二进制日志
server-id=1 #设置本地主库的ID唯一标识
binlog-do-db=JT_DB #配置要被从库复制的DB_NAME
binlog-ignore-db=mysql #指定不被从库复制的DB_NAME
[mysqld_safe]
log-error=/usr/local/mysql/logs/error.log
pid-file=/usr/local/mysql/mysql.pid
[client]
socket=/usr/local/mysql/mysql.sock
二、重启数据库
/etc/init.d/mysqld restart
三、登录主库并创建一个数据库用户 授权被从库同步 再刷新一下权限生效
[root@localhost ~]# mysql -uroot -pApeng12345.
grant replication slave on *.* to slave@192.168.1.171 identified by 'Apeng12345.';
flush privileges;
四、查看master的状态信息 重点要记住的
show master status;
五、登录从库设置从库的server ID
六、修改完数据库的配置文件后必须重启一下数据库
[root@localhost ~]# /etc/init.d/mysqld restart
七、在从库外围的系统层面登录刚才在主库创建的账号
[root@localhost ~]# mysql -uslave -pApeng12345. -h192.168.1.170
八、在从库退出当前账号 在系统外围 登录从库自己的 纯数据库root账号 进来后听到slave账号
九、在从库里用从库的纯数据库root账号授权 从库到主库同步数据。
change master to master_host='192.168.1.170',master_port=3306,master_user='slave',master_password='Apeng12345.',master_log_file='mysql-bin-master.000004',master_log_pos=594;
十、开启从库
start slave;