赞
踩
1、master将操作语句记录到binlog日志中,然后授予slave远程连接的权限(master一定要开启binlog二进制日志功能;通常为了数据安全考虑,slave也开启binlog功能)。
2、slave开启两个线程:IO线程和SQL线程。其中:IO线程负责读取master的binlog内容到中继日志relay log里;SQL线程负责从relay log日志里读出binlog内容,并更新到slave的数据库里,这样就能保证slave数据和master数据保持一致了。
3、Mysql复制至少需要两个Mysql的服务,当然Mysql服务可以分布在不同的服务器上,也可以在一台服务器上启动多个服务。
4、Mysql复制最好确保master和slave服务器上的Mysql版本相同(如果不能满足版本一致,那么要保证master主节点的版本低于slave从节点的版本)
master和slave两节点间时间需同步
- [root@localhost ~]# rpm -qa | grep mysql
- #如果有就使用 rm -rf 命令删除
- [root@localhost ~]# whereis mysql
- mysql: /usr/lib64/mysql /usr/share/mysql
- [root@localhost ~]# rm -rf /usr/lib64/mysql /usr/share/mysql #删除
- [root@localhost ~]# find / -name mysql
- /etc/selinux/targeted/active/modules/100/mysql
- [root@localhost ~]# rm -rf /etc/selinux/targeted/active/modules/100/mysql #删除
若用户及用户组已存在,则略过这一步,没有则创建
- [root@localhost ~]# id mysql
- id: mysql: no such user
- [root@localhost ~]# groupadd mysql
- [root@localhost ~]# useradd -r -g mysql mysql
- [root@localhost ~]# rpm -qa|grep libaio
- libaio-0.3.109-13.el7.x86_64 #我这里已经安装过了,若没有输出,则需要用yum安装
-
- yum install libaio-devel.x86_64
- #
- yum -y install numactl
https://dev.mysql.com/downloads/mysql/
下载完成后 用rz命令上传到 /soft/目录下
- [root@localhost local]# tar -xvf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz #解压
- [root@localhost local]# mv mysql-8.0.27-linux-glibc2.12-x86_64 mysql-8.0.27 #重命名
-
- #修改mysql 目录下所有文件的所属用户为root 所属组为root
- [root@localhost local]# chown -R root:root /soft/mysql-8.0.27/
-
- #创建数据存储目录,用以存储数据库数据
- [root@localhost local]# mkdir data
- #修改数据存储目录所属用户及所属组为mysql
- [root@localhost local]# chown mysql:mysql /soft/mysql-8.0.27/data
在初始化之前请先确认/etc/my.cnf 已经不存在,否则在初始化是mysql会默认读取配置文件作为初始化。若存在该文件,则如下将其改名,留作备份
- [root@localhost mysql]# ll /etc/ | grep my.cnf
- -rw-r--r--. 1 root root 570 Jun 8 2017 my.cnf
- drwxr-xr-x. 2 root root 31 Dec 20 17:32 my.cnf.d
-
- [root@localhost mysql]# mv /etc/my.cnf /etc/my.cnf.bak
- [root@localhost mysql]# ll /etc/ | grep my.cnf
- -rw-r--r--. 1 root root 570 Jun 8 2017 my.cnf.bak
- drwxr-xr-x. 2 root root 31 Dec 20 17:32 my.cnf.d
-
-
- #开始初始化
- [root@localhost mysql]# /soft/mysql-8.0.27/bin/mysqld --initialize --user=mysql --basedir=/soft/mysql-8.0.27 --datadir=/soft/mysql-8.0.27/data
- #注意复制初始化密码 Na(#XoZSH3hu
- #进入MySQL安装目录support-files文件中,创建mysql-default.cnf 文件并添加权限
- [root@localhost mysql]# cd /soft/mysql-8.0.27/support-files/
- [root@localhost support-files]# touch mysql-default.cnf
- [root@localhost support-files]# chmod 777 mysql-default.cnf
-
- #将其复制到/etc/下,改名为my.cnf
- [root@localhost support-files]# cp -a mysql-default.cnf /etc/my.cnf
-
- vi /etc/my.cnf
- #在my.cnf中添加配置
- [mysqld]
- basedir = /soft/mysql-8.0.27
- datadir = /soft/mysql-8.0.27/data
- socket = /tmp/mysql.sock
- log-error = /soft/mysql-8.0.27/data/error.log
- pid-file = /soft/mysql-8.0.27/data/mysql.pid
- port = 3306
- max_allowed_packet=32M
-
- #修改配置文件权限
- chmod 644 /etc/my.cnf
- #复制mysql服务文件到/etc/init.d/目录下,重命名为mysql
- [root@localhost support-files]# cp -a /soft/mysql-8.0.27/support-files/mysql.server /etc/init.d/mysql
- #添加可执行权限
- [root@localhost support-files]# chmod +x /etc/init.d/mysql
-
- #注册服务
- chkconfig --add mysql #注册
- chkconfig --list mysql #检测
-
- #/etc/ld.so.conf要配置路径,不然报错
- [root@localhost support-files]# vi /etc/ld.so.conf
- #在ld.so.conf中添加 mysql 的lib文件
- /soft/mysql-8.0.27/lib
-
- #配置环境变量
- [root@localhost support-files]# vi /etc/profile
- #末尾添加:
- export PATH=$PATH:/soft/mysql-8.0.27/bin:/soft/mysql-8.0.27/lib
- #重新加载使环境变量生效
- [root@localhost support-files]# source /etc/profile
-
- #启动服务
- [root@localhost support-files]# service mysql start
- #使用初始化密码登录
- [root@localhost support-files]# mysql -uroot -p
- #修改密码
- alter user 'root'@'localhost' identified by 'cwb174140';
如果忘记初始密码:参考这里的办法
https://zhuanlan.zhihu.com/p/458845050
- mysql> use mysql;
- mysql> update user set host = '%' where user = 'root';
- mysql> flush privileges;
- mysql> GRANT ALL ON *.* TO 'root'@'%';
- mysql> flush privileges;
8.1 有关防火墙的设置
- #防火墙设置
- #暂时关闭防火墙
- systemctl stop firewalld
- #开放指定端口号
- firewall-cmd --zone=public --add-port=8080/tcp --permanent
- #移除已开放的端口号
- firewall-cmd --zone=public --remove-port=8080/tcp --permanent
- #使防火墙设置生效
- firewall-cmd --reload
我们需要一个主节点,即主数据库mysql(为次数据库提供更新日志)
- #主节点配置
- #在 /etc/my.cnf中新增以下代码
- #开启二进制日志
- log_bin=master_bin
- #设置当前节点全局唯一ID
- server-id=9
- #重启mysql服务
- service mysql start
- #查看从二进制日志的文件和位置开始进行复制
- mysql> show master status;
- 创建有复制权限的用户账号
- create user repluser@'10.70.20.%' identified by 'cwb174140';
- mysql> grant replication slave on *.* to repluser@'10.70.20.%';
- #从节点配置
- #为当前节点设置一个全局惟的ID号
- server_id=99
- #开启二进制日志
- log-bin=slave_log
- #设置从数据库只读(对root用户无效)
- read_only=ON
- #relay log的文件路径
- relay_log=relay-log
- #默认值hostname-relay-bin.index
- relay_log_index=relay-log.index
- mysql> change master to master_host='10.70.20.99',master_user='repluser',master_password='1qaz@WSX3edc',master_log_file='master_bin.000003',MASTER_LOG_POS=478,get_master_public_key=99;
-
- #这里的get_master_public_key是节点配置文件中的id
-
-
- mysql> START SLAVE;
- mysql> SHOW SLAVE STATUS\G;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。