基本环境:
CentOS release 6.10 (Final)
mysql 5.7.16
1.下载mysql 5.7.16(去官网下载了传到linux或直接wget),如图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y2BZCaa9-1592191407103)(/uploads/mysql-mongo-es/images/m_9b0fe95093b9938357cef4eb845d8fff_r.png)]
或者通过linux命令行获取:
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
2.添加mysql相关用户
添加用户组mysql:
groupadd mysql
添加用户mysql且该用户不能登陆:
useradd -g mysql mysql -s /bin/false
创建用户组和用户非强制性要求,可以直接用root搞,不过还是养成良好习惯,不同用户干不同事儿,免得一直用着root为所欲为,稍微手滑一切go die…
3.新建一个文件夹,待下载完成后解压到里面,并复制两份,做一主一从用,新建data目录,conf目录,logs目录,sock目录(建立这四个目录非强制要求,这里仅仅是为了区分各文件,便于管理),具体路径如下:
data目录:
/home/admin/data/mysql
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aZavGJMB-1592191407106)(/uploads/mysql-mongo-es/images/m_7c5d931c44a9668fe4e9c8e0df316a3c_r.png)]
log目录:
/home/admin/logs/mysql
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o2HMSnYL-1592191407107)(/uploads/mysql-mongo-es/images/m_657e1c04448687c36360305fddd816ce_r.png)]
安装目录:
/opt/mysql/
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qcC8ewmj-1592191407110)(/uploads/mysql-mongo-es/images/m_8857141fdcc42ab39a2577d07d283806_r.png)]
进入conf目录,新建master.cnf,slave.cnf
进入logs目录,新建master_error.log,slave_error.log
注:这一步可以跳过,这一步是为新的启动方式mysqld_safe做的异常日志输出,如果用老的mysqld启动,则可以不用配置
现在开始搞配置文件,这里我们拟定3306为主库(master),3307从库(slave)
首先配置master,即conf目录下的master.cnf,如图(这里只配置了mysqld组和mysqld_safe,没有配置client),
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9BfEg9u7-1592191407111)(/uploads/mysql-mongo-es/images/m_7c0cac5a6db504bf52306a988db5d9ba_r.png)]
配置完成后,进入mysql安装目录(basedir指向路径)初始化实例
执行命令:
/bin/mysqld --defaults-file=/opt/mysql/conf/master.cnf --initialize-insecure
其中-insecure作用是不设置密码,如果不带则mysql会随机生成一个密码出现在控制台,需要记下来
初始化不报错则启动mysql服务,运行mysqld或mysqld_safe命令启动mysql:
./bin/mysqld --defaults-file=/opt/mysql/conf/master.cnf
启动不报错后为mysql root用户设置一个密码:
./bin/mysqladmin -u root password "123456" --socket=/opt/mysql/sock/master.sock(注意后面的 --socket参数必须带上,与配置文件中的socket配置值一致)
登陆mysql控制台(由于配置文件中没有配置client组,所以登陆命令同样需要添加–socket参数):
./bin/mysql -uroot -p123456 --socket=/opt/mysql/sock/master.sock
登陆后查看master状态,如图:
show master status;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8dIn1uRV-1592191407113)(/uploads/mysql-mongo-es/images/m_ad8f3a2b77d6db6ae7ed4f83a753f765_r.png)]
每个人的file和position可能不一样,请务必记录下来
新建一个复制帐户,用于从库复制binlog使用:
create user 'slavedb'@'%' identified by '123456';
GRANT REPLICATION SLAVE ON *.* TO 'slavedb'@'%';
把改动及时写入grant table
FLUSH PRIVILEGES;
master主库就ok了,现在开始配置slave从库,这里以slave.cnf为例子如图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WeR8FEjw-1592191407113)(/uploads/mysql-mongo-es/images/m_744c2717b24ee7004d85845be2bb63b6_r.png)]
配置完成后,重复初始化,启动,设置密码步骤(注意指向所属的配置文件和socket)
然后登陆mysql,执行如下命令:
stop slave; #停止slave
CHANGE MASTER TO
MASTER_HOST='127.0.0.1',
MASTER_USER='slavedb',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='master-bin.000005',
MASTER_LOG_POS=2423; // 指向主库设置,其中最后两个参数为master中查询出来的值
start slave; #启动slave
然后查看slave状态,如图,看到红圈内的值则启动成功(另外一台机器重复上述步骤):
show slave status;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LsEmx56G-1592191407114)(/uploads/mysql-mongo-es/images/m_4f1038866893c33622907f65fe8d226f_r.png)]
最后登陆master库进行建表,写入操作,而后去slave机查看,即可发现同步成功
参考链接: