cento7下创建mysql5.7的双向主从
因为centos7的版本与mysql5.7的版本相对老版本都有变更,所以记录一下。
先安装mysql必用的rpm包:
yum -y install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Config-IniFiles ncftp perl-Params-Validate perl-CPAN perl-Test-Mock-LWP.noarch perl-LWP-Authen-Negotiate.noarch perl-devel
(perl-DBD-MySQ包安装的时候会安装MariaDB,下一步删除它)
检查是否安装NySQL,如果安装 卸载之
rpm -qa |grep mysql
yum remove mysql*
检查是否安装MariaDB,如果安装 卸载之(重要)
rpm -qa |grep mariadb
yum remove mariadb*
新增用户/组 参数文件
groupadd mysql
useradd -d /home/mysql -g mysql -m mysql
passwd mysql
mysql
#创建mysql数据存储路径
mkdir /data
mkdir /data/mysql
# binlog存储路径
mkdir /data/mysql/binlog
# 错误日志存储路径
mkdir /data/mysql/log
# 磁盘临时表存储路径
mkdir /data/mysql/tmp**
# 赋予mysql账户linux权限
chown -R mysql:mysql /data/mysql
#解压缩二进制包
tar -xvf mysql-5.7.19-linux-glibc2.5-x86_64.tar.gz
# 移动到/usr/local路径下
mv mysql-5.7.19-linux-glibc2.5-x86_64 /usr/local/
# 编译路径改名
cd /usr/local
mv mysql-5.7.19-linux-glibc2.5-x86_64 mysql
chown -R mysql:mysql /usr/local/mysql
# 初始化mysql
./mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/mysql/data/ --user=mysql
# 注册mysql命令
echo "PATH=/usr/local/mysql/bin:\$PATH" >> /etc/profile
source /etc/profile
# 设置开机启动
cp ./mysql/support-files/mysql.server /etc/init.d/mysqld
chown -R mysql:mysql /etc/init.d/mysqld
chown -R mysql:mysql /etc/my.cnf
chkconfig --add mysqld
chkconfig mysqld on
(使用优化版本的my.cnf需要添加indb02文件,并修改权限
dd if=/dev/zero of=indb02 bs=1M count=64
if=FILE : 指定输入文件,若不指定则从标注输入读取。这里指定为/dev/zero是Linux的一个伪文件,它可以产生连续不断的null流(二进制的0)
of=FILE : 指定输出文件,若不指定则输出到标准输出
bs=BYTES : 每次读写的字节数,可以使用单位K、M、G等等。另外输入输出可以分别用ibs、obs指定,若使用bs,则表示是ibs和obs都是用该参数
count=BLOCKS : 读取的block数,block的大小由ibs指定(只针对输入参数))
service mysqld start
启动失败的时候,查看跟踪文件。
(找不到pid文件常见的报错有:1.之前启动失败,生成的索引文件没删除*.index,2没有跟踪文件,需要手动创建并修改权限,3锁文件没有删除)
查看初始密码
cat /root/.mysql_secret
或者grep 'temporary password' /var/log/mysqld.log
# 修改root密码
/usr/local/mysql/bin/mysqladmin -u root password 123456
mysql -uroot -p123456 -e "update mysql.user set password=password('123456') where user='root'; flush privileges;"
或者ALTER USER 'root'@'localhost' IDENTIFIED BY 'root123';或者set PASSWORD=PASSWORD('root');
# 删除空账户
mysql -uroot -p123456 -e "delete from mysql.user where user=''; flush privileges;"
# 允许外网使用root访问mysql
mysql -uroot -p123456 -e "grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;flush privileges;"
exit
配置双向主从:
修改配置文件中的service_id和bin_log文件名。创建并授权repl用户同步,关闭GTID,show master status 记录binlog日志pos号,彼此changge master并开启。
注意权限问题。