目录1.检查服务器是否有mysql服务并卸载2.将安装包拷贝到指定目录并安装2.1解压安装包2.2重命名解压文件夹名称2.3在mysql目录下创建data目录存放数据2.4更换mysql目...
目录
1. 检查服务器是否有mysql服务并卸载2. 将安装包拷贝到指定目录并安装
2.1 解压安装包
2.2 重命名解压文件夹名称
2.3 在mysql目录下创建data目录存放数据
2.4 更换mysql目录的所属用户和用户组
2.5 设置MySQL配置文件
2.6 初始化mysql
2.7 启动mysql服务
2.8 登录并修改默认密码
2.9 开放防火墙端口
3. 主从数据库配置
3.1 修改主从库的my.cnf文件
3.2 依次启动主从库,更新配置,并重启
3.3 查看主库状态,并创建从库用于登录的主库的用户
3.4 从库执行接入主库服务器MySQL服务语句
3.5 主从状态检查
3.6 测试主从库同步
总结
1. 检查服务器是否有mysql服务并卸载
# 检查服务器是否已安装MySQL服务,若未输出任何信息信息表示无MySQL服务,若有则卸载(rpm -e --nodeps mysql-xxxxxxxxx) [root@ydgq ~]# rpm -qa | grep mysql # 查找MySQL名称的目录和文件(find / -name mysql),并删除(rm -rf xxx) [root@ydgq ~]# find / -name mysql /etc/selinux/targeted/active/modules/100/mysql /usr/lib64/mysql /usr/share/mysql # 检查是否存在mysql用户,若存在,不需要新增用户 [root@ydgq ~]# groupadd mysql [root@ydgq ~]# useradd -r -g mysql mysql
2. 将安装包拷贝到指定目录并安装

注:这里我拷贝到/usr/local目录下。
2.1 解压安装包
命令:tar -vxf mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz

2.2 重命名解压文件夹名称
命令:mv mysql-8.0.28-linux-glibc2.12-x86_64 mysql

2.3 在mysql目录下创建data目录存放数据
# 进入MySQL安装根目录 [root@ydgq local]# cd mysql # 创建data文件夹 [root@ydgq mysql]# mkdir data # 创建日志目录 [root@ydgq mysql]# mkdir logs # 给日志目录赋值上所有权限 [root@ydgq mysql]# chmod 777 /usr/local/mysql/logs
2.4 更换mysql目录的所属用户和用户组
[root@ydgq local]# chown -R mysql:mysql /usr/local/mysql [root@ydgq local]# ll 总用量 1176052 drwxr-xr-x. 2 root root 6 4月 11 2018 bin drwxr-xr-x. 2 root root 6 4月 11 2018 etc drwxr-xr-x. 2 root root 6 4月 11 2018 games drwxr-xr-x. 2 root root 6 4月 11 2018 include drwxr-xr-x. 2 root root 6 4月 11 2018 lib drwxr-xr-x. 2 root root 6 4月 11 2018 lib64 drwxr-xr-x. 2 root root 6 4月 11 2018 libexec drwxr-xr-x. 10 mysql mysql 141 2月 9 09:31 mysql drwxr-xr-x. 2 root root 6 4月 11 2018 sbin drwxr-xr-x. 5 root root 49 2月 8 14:49 share drwxr-xr-x. 2 root root 6 4月 11 2018 src
注:mysql目录必须要有755的权限。
2.5 设置MySQL配置文件
# 进入etc目录 cd /etc/ # 编辑my.cnf文件 vim my.cnf
my.cnf文件内容修改如下
[mysqld] socket=/usr/local/mysql/mysql.sock port=3306 user=mysql basedir=/usr/local/mysql datadir=/usr/local/mysql/data character_set_server=utf8mb4 lower_case_table_names=1 sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION [mysqld_safe] log-error=/usr/local/mysql/logs/mysql.log pid-file=/usr/local/mysql/logs/mysql.pid !includedir /etc/my.cnf.d
注:若不存在my.cnf.d目录,则需要创建一个。
2.6 初始化mysql
# 进入mysql的bin目录 [root@ydgq my.cnf.d]# cd /usr/local/mysql/bin # 初始化数据库 [root@ydgq bin]# ./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql

注:记住此时生成的随机密码:“tqmLwmUi<6Wq”。
2.7 启动mysql服务
# 拷贝mysql服务命令到/etc/init.d/mysql中 [root@ydgq mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql # 启动mysql服务 [root@ydgq mysql]# service mysql start # 查看mysql服务状态 [root@ydgq mysql]# ps -ef | grep mysql
注:出现错误,截图如下

解决方法如下:
[root@ydgq bin]# echo "" > /usr/local/mysql/logs/mysql.log [root@ydgq bin]# chown -R mysql:mysql /usr/local/mysql/logs/mysql.log
2.8 登录并修改默认密码
# 进入mysql根目录下bin目录 cd /usr/local/mysql/bin/ # 用初始密码登录mysql,若下面命令不行,则输入(./mysql -uroot -h 127.0.0.1 -p) ./mysql -u root -p # 修改root密码 ALTER USER 'root'@'localhost' IDENTIFIED BY '设置得密码'; FLUSH PRIVILEGES; # 设置远程能够用root访问 use mysql; update user set host='%' where user ='root'; FLUSH PRIVILEGES; # 设置权限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
2.9 开放防火墙端口
# 开放3306端口 firewall-cmd --zone=public --add-port=3306/tcp --permanent # 关闭3306端口 firewall-cmd --zone=public --remove-port=3306/tcp --permanent # 服务生效 firewall-cmd --reload # 查看防火墙所有开放端口 firewall-cmd --zone=public --list-ports # 查看防火墙状态 firewall-cmd --state # 关闭防火墙 systemctl stop firewalld.service # 查看监听端口 netstat -lnpt
3. 主从数据库配置
准备工作:
准备两台装好MySQL的服务器:192.168.153.100(主)、192.168.153.101(从)保证两台服务器在同一个网段上,并且使得他们的配置信息能够在链接的时候对接上。
3.1 修改主从库的my.cnf文件
主库配置(192.168.153.100)my.cnf
[mysqld] # 启用二进制日志 log-bin=master-bin # 服务器唯一ID,一般取IP最后一段 server-id=100 log_bin_index=master-bin.index # 自动清理 7 天前的log文件,可根据需要修改 expire_logs_days=7 # 要给从机同步的库(如果不写,默认全部同步) # binlog-do-db=db01 #不给从机同步的库(多个写多行) #binlog-ignore-db=mysql #binlog-ignore-db=information_schema #binlog-ignore-db=performance_schema #binlog-ignore-db=sys
从库配置(192.168.153.101)my.cnf
[mysqld] # 服务器唯一ID,一般取IP最后一段 server-id=101 # 加上以下参数可以避免更新不及时,SLAVE 重启后导致的主从复制出错 read_only = 1 master_info_repository=TABLE relay_log_info_repository=TABLE relay-log = slave-relay-bin # 主服务器I/O日志读取、记录及存放 relay-log-index = slave-relay-bin.index
3.2 依次启动主从库,更新配置,并重启
主库
# 启动MySQL服务 [root@ydgq bin]# service mysql start # 登录MySQL [root@ydgq bin]# cd /usr/local/mysql/bin/ [root@ydgq bin]# ./mysql -u root -h 127.0.0.1 -p # 刷新权限设置等 mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> quit; Bye # 重启MySQL服务 [root@ydgq bin]# service mysql restart Shutting down MySQL.. SUCCESS! Starting MySQL... SUCCESS!
从库
# 启动MySQL服务 [root@ydgq bin]# service mysql start [root@ydgq logs]# cd /usr/local/mysql/bin/ [root@ydgq bin]# ./编程客栈mysql -u root -h 127.0.0.1 -p mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> quit; Bye [root@ydgq bin]# service mysql restart Shutting down MySQL.. SUCCESS! Starting MySQL... SUCCESS!
3.3 查看主库状态,并创建从库用于登录的主库的用户
SQL命令:
# 创建用户并设置密码 mysql> create user 'user001'@'192.168.%.%' identified by 'root'; Query OK, 0 rows affected (0.01 sec) # 授权 mysql> grant replication slave on *.* to 'user001'@'192.168.%.%'; Query OK, 0 rows affected (0.00 sec) # 刷新权限 mysql> flush privileges; Query OK, 0 rows affected (0.01 sec)
SQL命令:show master status;

注:这里查看到的信息即是主服务器准许接入的信息,我们要在从服务器MySQL语句中执行接入语句需要用到主服务器允许接入参数,这里的file和position非常重要;
3.4 从库执行接入主库服务器MySQL服务语句
SQL命令:
change master to master_host='192.168.153.100',master_port=3306,master_user='user001',master_password='root',master_log_file='master-bin.000002',master_log_pos=157;
master_host:主服务器ip地址master_port:主服务器端口master_user:链接主服务器账户master_password:链接主服务器角色账户密码master_log_file:在查询主库时查询到的file参数值master_log_pos:在查询主库时查询到的positon参数值
执行完上述命令后进行如下操作:
1.启用同步:start slave;
2.查看同步状态:show slave status;

注:出现如上图所示的错误,原因为用户的密码加密策略问题导致,需修改主库的用户密码策略。
mysql> ALTER USER 'user001'@'192.168.%.%' IDENTIFIED WITH mysql_native_password BY 'root'; Query OK, 0 rows affected (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
更新主库后,记得重启从库,这时就没有错误了。
3.5 主从状态检查
主库

注:命令:show processlist; 如上图所示的Command为Binlog Dump表示配置成功!;
从库


注:命令:show slave status \G。如上图所示表示配置成功。
3.6 测试主从库同步
在主库里面新建test数据库,并在数据库中新建sys_c_user表,同时插入一条数据。


操作后,查看从库的数据库及表情况。

测试发现,从库里面也添加了相应的数据库、表及表数据。说明主从搭建成功。
扩展:主库查看binlog日志

注:命令:show binlog events;
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。










