from@liuwei
Centos7+mysql5.7.21主从配置
数据目录设置:
字符集设置:
开机自动重启设置:
192.168.200.108:slave
192.168.200.109:master
一、安装
主从 mysql 都需要进行下面的操作
1、卸载系统自带的 mariadb-lib
[srvadmin@du-s8-idc soft]$ rpm -qa | grep -i mariadb 或 rpm -qa | grep -i mysql
mariadb-libs-5.5.44-2.el7.centos.x86_64
pcp-pmda-mysql-3.10.6-2.el7.x86_64
[srvadmin@du-s8-idc soft]$ sudo rpm -e mariadb-libs-5.5.44-2.el7.centos.x86_64 —nodeps
[srvadmin@du-s8-idc soft]$ sudo rpm -e pcp-pmda-mysql-3.10.6-2.el7.x86_64 —nodeps
2、mysql rpm 安装包
mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
下载地址
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
tar -xvf mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
[srvadmin@du-s8-idc soft]$ sudo rpm -ivh mysql-community-common-5.7.21-1.el7.x86_64.rpm
[srvadmin@du-s8-idc soft]$ sudo rpm -ivh mysql-community-libs-5.7.21-1.el7.x86_64.rpm
[srvadmin@du-s8-idc soft]$ sudo rpm -ivh mysql-community-client-5.7.21-1.el7.x86_64.rpm
[srvadmin@du-s8-idc soft]$ sudo rpm -ivh mysql-community-server-5.7.21-1.el7.x86_64.rpm
修改 mysql 的数据目录
sudo vi /etc/my.cnf
datadir=/var/lib/mysql
datadir=/data00/mysql/data
创建并修改 /data00/mysql/data 目录属主
mkdir -p /data00/mysql/data
sudo chown -R mysql:mysql mysql/data
一定要安装上述的顺序来执行。
注:执行 rpm -ivh mysql-community-server-5.7.21-1.el7.x86_64.rpm
出现错误:warning: mysql-community-server-5.7.21-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY error: Failed dependencies: libaio.so.1()(64bit) is needed by mysql-community-server-5.7.21-1.el7.x86_64 libaio.so.1(LIBAIO_0.1)(64bit) is needed by mysql-community-server-5.7.21-1.el7.x86_64 libaio.so.1(LIBAIO_0.4)(64bit) is needed by mysql-community-server-5.7.21-1.el7.x86_64 错误原因:缺少依赖包 libaio
解决方式: yum install libaio
为了保证数据库目录为与文件的所有者为 mysql 登陆用户,如果你是以 root 身份运行 mysql 服务,需要执行下面的命令初始化 mysqld —initialize —user=mysql
如果是以 mysql 身份运行,则可以去掉 —user 选项。
另外 —initialize 选项默认以“安全”模式来初始化,则会为 root 用户生成一个密码并将该密码标记为过期,登陆后你需要设置一个新的密码,而使用 —initialize-insecure 命令则不使用安全模式,则不会为 root 用户生成一个密码。
这里演示使用的 —initialize 初始化的,会生成一个 root 账户密码,密码在 log 文件里,最下面一行 FadKojZte5#T 就是自动生成的密码
[srvadmin@du-s8-idc soft]$ sudo mysqld —initialize —user=mysql
[srvadmin@du-s8-idc soft]$ cat /var/log/mysqld.log
[srvadmin@du-s8-idc soft]$ sudo systemctl start mysqld.service
7、设置 mysql 开机自动启动
[srvadmin@du-s8-idc soft]$ sudo systemctl enable mysqld
[srvadmin@du-s8-idc soft]$ mysql -uroot -p
mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘passwd’;
二、主配置(192.168.200.109)
1、vi /etc/my.cnf 配置
server-id=109 #设置主服务器的 ID (不能和别的服务器重复,建议使用 ip 的最后一段)
innodb_flush_log_at_trx_commit=2 #
sync_binlog=1 #开启 binlog 日志同步功能
log-bin=mysql-bin-109 #binlog 日志文件名
binlog-do-db=xxxx # 这个表示只同步某个库 (如果没有此项,表示同步所有的库)
2、配置完后重启 mysql
sudo systemctl restart mysqld
mysql -u root -p ##登录密码
mysql> grant replication slave on . to ‘mysqlBackupUser’@’192.168.200.108’ identified by ‘passwd’;
##授权给从数据库服务器用户名 mysqlBackupUser,密码 passwd,192.168.200.108 使用通配符表示该网段下所有服务器均可使用
mysql>show master status;##查看主库的状态 file,position 这两个值很有用,记一下。要放到 slave 配置中
+——————————+—————+———————+—————————+—————————-+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +——————————+—————+———————+—————————+—————————-+ | mysql-bin-109.000001 | 462 | xxxx | | | +——————————+—————+———————+—————————+—————————-+
三、从配置(192.168.200.108)
1、vi /etc/my.cnf
server-id=108 #ip 最后一段
innodb_flush_log_at_trx_commit=2
sync_binlog=1
log-bin=mysql-bin-108
配置完成后,重启从库的 mysql
sudo systemctl restart mysqld
mysql -u root -p ##登录 mysql
mysql> change master to master_host=’192.168.200.109’, master_user=’mysqlBackupUser’
,master_password=’passwd’,master_log_file=’mysql-bin-109.000001’,master_log_pos=462;
mysql> start slave; ##开启从库 (stop slave:关闭从库)
mysql> show slave status; ###Slave_IO_Running,Slave_SQL_Running 都为 Yes 的时候表示配置成功
四、验证
create database test_lw character set utf8;