目录
一、安装mysql
首先安装mysql,将mysql安装在linux系统目录下(例如:/usr/local/mysql-5.7.26),在mysql的安装目录(/usr/local/mysql-5.7.26)下创建data文件夹,在data文件夹下创建4个目录文件夹,分别为3307,3308,3309,3310作为我们启动的多实例mysql数据库。
注:mysql数据库的安装在网上可以搜到大把教程,可自行百度安装。
二、mysql多实例启动
2.1、多实例的初始化
在mysql的/usr/local/mysql-5.7.26/bin目录下分别执行命令:
(1)、./mysqld --initialize-insecure --basedir=/usr/local/mysql-5.7.26 --datadir=/usr/local/mysql-5.7.26/data/3307 --user=mysql
(2)、./mysqld --initialize-insecure --basedir=/usr/local/mysql-5.7.26 --datadir=/usr/local/mysql-5.7.26/data/3307 --user=mysql
(3)、./mysqld --initialize-insecure --basedir=/usr/local/mysql-5.7.26 --datadir=/usr/local/mysql-5.7.26/data/3307 --user=mysql
(4)、./mysqld --initialize-insecure --basedir=/usr/local/mysql-5.7.26 --datadir=/usr/local/mysql-5.7.26/data/3307 --user=mysql
注:--initialize-insecure :为不生成root用户密码,即密码为空
--basedir:指定mysql的安装目录
--datadir:指定mysql的数据存储目录
--user:指定mysql启动的用户名(root只是启动用户管理者,mysql为启动的用户使用者)
初始化完成之后,在3307,3308,3309,3310目录下分别创建一个my.cnf文件:
(1)、分别对这4个文件进行配置(其他几个实例相同,修改相关端口和路径)
[client]
port=3307
socket=/usr/local/mysql-5.7.26/data/3307/mysql.sock
default-character-set=utf8
[mysqld]
datadir=/usr/local/mysql-5.7.26/data/3307
socket=/usr/local/mysql-5.7.26/data/3307/mysql.sock
#user=mysql
port=3307
character-set-server=utf8
log-error=/usr/local/mysql-5.7.26/data/3307/error.log
pid-file=/usr/local/mysql-5.7.26/data/3307/mysql.pid
lower_case_table_names=1
autocommit=1
client为客户端设置,主要是端口、编码设置
mysqlld为服务端设置
datadir:数据存储位置
log-error:错误日志
pid-file:进程编号文件
lower_case_table_names=1:忽略大小写
autocommit=1:自动提交
2.2、多实例数据库启动
切换到mysql的/usr/local/mysql-5.7.26/bin目录下,使用mysql_safe命令指定配置文件并启动mysql服务:
(1)、./mysqld_safe --defaults-file=/usr/local/mysql-5.7.26/data/3307/my.cnf &
(2)、./mysqld_safe --defaults-file=/usr/local/mysql-5.7.26/data/3308/my.cnf &
(3)、./mysqld_safe --defaults-file=/usr/local/mysql-5.7.26/data/3309/my.cnf &
(4)、./mysqld_safe --defaults-file=/usr/local/mysql-5.7.26/data/3310/my.cnf &
--defaults-file:指定启动配置文件
&:后台启动
启动之后可以通过命令:ps -ef | grep mysql 查看mysql启动情况
至此,多实例mysql数据库启动完成。
2.3、多实例启动后配置
(1)切换到mysql的/usr/local/mysql-5.7.26/bin目录下,使用命令./mysql -uroot -p -P3307 -h127.0.0.1登录mysql客户端
(2)修改mysql的密码,执行命令alter user 'root'@'localhost' identified by 'root';(把root用户的密码改为root)
(3)授权远程访问,执行命令grant all privileges on *.* to root@'%' identified by 'root';(注1)
(4)刷新权限,执行命令flush privileges;
注1:其中*.*,第一个*代表任意数据库,第二个*代表任意表。
root@‘%’中,root表示用户名,%表示IP地址,可以具体指定,例如:root@192.168.20.123
2.4、多实例关闭
方法一:bin目录下,执行命令./mysqladmin -uroot -p -P3307 -h127.0.0.1 shutdown;
-p:密码
-P:关闭对应多实例的端口号
-h:IP地址
方法二:在mysql命令行直接执行命令:shutdown;
三、主从复制的搭建(一主三从)
以3307做为主,3308、3309、3310做为从为例。
修改3307主服务器的的my.cnf文件,分别对应添加下面2行:
log-bin=mysql-bin
server-id=3307
log-bin:表示启用二进制日志
server-id:服务器id,必须唯一
修改3308,3309,3310从服务器的my.cnf文件,分别对应添加下面1行:
server-id=3308
3.1、设置mysql服务器主从关系
3.1.1 、主服务器设置(3307)
(1)、在主服务器(3307)上创建复制数据的账号并授权,进入主服务器mysql命令行,执行命令grant replication slave on *.* to 'copy'@'%' identified by 'root';(注1)
(2)、查看主服务状态show master status;若主服务器状态正常,可不重置主服务器,否则应该重置主服务器 reset master;
图中file为二进制日志文件,position为偏移坐标,表示从偏移坐标开始复制,正常状态为154.
注1:创建复制账号为copy,密码为root,可在mysql数据库中的user表中进行查看。
3.1.2、从服务器设置(3308,3309,3310)
(1)、先查看一下从服务器(3308,3309,3310)状态 show slave,如果状态正常(状态为Empty set)可以不重置,否则应该重置先 stop slave;再reset slave;
(2)在从服务器上指定复制哪个主服务器,执行命令:change master to master_host='192.168.254.102',master_user='copy',master_port=3307,master_password='root',master_log_file='mysql-bin.000001',master_log_pos=154;
master_host:主服务器的ip地址
master_port:主服务器的端口
master_user:主服务器的复制账号(上一步在主服务器已创建)
master_password:主服务器的复制密码(上一步在主服务器已创建)
master_log_file:主服务器的二进制日志文件
master_log_pos:主服务器日志文件的偏移量
(3)、开始mysql主从复制,执行命令:start slave;
(4)、验证,可以使用Navicat直接手动测试,也可以查看mysql状态。
进入mysql命令行,show slave status \G
查看Slave_IO_Running和Slave_SQL_Running为YES,就为正常状态
四、小结
至此,mysql的主从复制(一主三从)就已经配置好了,双主双从也就是把对应的主服务器和从服务器按照此操作一遍即可。
标签:主从复制,5.7,Mysql,26,实例,usr,mysql,服务器,local
来源: https://blog.csdn.net/vatxiongxiaohui/article/details/95195046