Liunx下安装MYSQL8.0并实现主从复制
-
首先检查liunx是否已经存在Mysql文件或软件,有的话删除;
查看软件:rpm -qa |grep mysql
卸载软件:rpm remove mysql…(软件名称)
查看文件:find / -name mysql
删除文件:rm -rf /var/mysql(文件路径) -
安装依赖之类的
yum -y install wget cmake gcc gcc-c++ ncurses ncurses-devel libaio-devel openssl openssl-devel
yum install libaio libaio-devel
提示没有的wget的话先安装
yum -y install wget -
建立组文件夹之类的
groupadd mysql
useradd -g mysql mysql
mkdir $MYSQL_HOME/data -
下载MYSQL8.0压缩包格式的
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
解压压缩包
tar -zvxf mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
或者
tar -vxf mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
然后移动并改名
mv mysql-8.0.21-linux-glibc2.12-x86_64 /usr/local/mysql -
修改mysql配置文件(my.cnf)
vi /etc/my.cnf
以下是内容
[client]
port=3306
socket=/tmp/mysql.sock[mysqld]
port=3306
user=mysql
server_id=1
socket=/tmp/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
log_bin=master-a-bin
binlog-format=ROW
gtid_mode=on
enforce-gtid-consistency=1
log-slave-updates=1
lower_case_table_names=1
以上参数我开启了GTID和二进制日志方便做主从复制
(提示一点MYSQL8.0一定要加lower_case_table_names=1 这个参数是忽略查询大小写一定要添加不然初始化之后再加是启动不起来的8.0很坑) -
初始化并启动MYSQL
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/这条执行完后有一个初始化的密码要复制下来等会登录时用
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
service mysqld start -
登录mysql
/usr/local/mysql/bin/mysql -uroot -p
Enter password:KUw#Ka9X-BG<(这里是刚初始化的密码 复制下来粘贴就好了)
进去之后要更改密码才能使用
alter user ‘root’@‘localhost’ identified by ‘123456’;
刷新一下
flush privileges;
值得一提的新版的MYSQL8.0的特性,创建用户和授权语句要分开执行,而且密码的默认格式都是caching_sha2_password,接下来我创建一个密码为mysql_native_password格式的root用户方便所有IP访问(做主从复制的第一步)。create user ‘root’@’%’ identified WITH mysql_native_password BY ‘SZyddb2018’;
grant all privileges on . to ‘root’@’%’;
flush privileges;
-
从库设置
按照上面的步骤设置就好了,但vi /etc/my.cnf的时候里面的server-id是唯一的要设置成不一样的,既然主设置了1从设2就好了。以下是从的设置。
[client]
port=3306
socket=/tmp/mysql.sock[mysqld]
port=3306
user=mysql
server_id=2
socket=/tmp/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
log_bin=master-a-bin
binlog-format=ROW
gtid_mode=on
enforce-gtid-consistency=1
log-slave-updates=1
lower_case_table_names=1 -
主从复制-主
先在主库查询一些主的状态。
show master status;
file:代表二进制日志的名称
Position:代表二进制日志的偏移量,你更新一条数据就会增加。(用于基于二进制日志的主从复制)
Executed_Gtid_Set:代表GTID用于主从复制,更新一条数据就会有变动。 -
主从复制-从
查看到主的GTID后,因为我们主之前改动过所有GTID已经有变更了,你直接去授权从的话会报错的,所以先清除一下从的master并设置为主的GTID然后再启动slave,报错都可以用这招。
reset master;
set global gtid_purged = ‘e1a35b9a-f185-11ea-ba77-000c29987751:1-2103’;
start slave;
最后再查看下slave状态
show slave status\G;
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
看到这两个状态都为Yes就大功告成啦!
记录下自己的工作QVQ,配图的话之后再加上。