mysql搭建手册
主从搭建
-
搭建mysql
-
关闭防火墙:systemctl stop firewalld 如果失败先安装 yum install iptables-services
-
配置数据库 /etc/my.cnf,配置同步数据库等
-
主库配置信息
[mysqld] datadir=/usr/local/mysql/data log-error=/usr/local/mysql/data/error.log port = 3306 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES symbolic-links=0 max_connections=400 innodb_file_per_table=1 #表名大小写不明感,敏感为 lower_case_table_names=1 #主从配置 #服务的唯一编号 server-id=1 #每次执行写入操作binlog和磁盘同步 sync-binlog=1 # 开启mysql binlog功能 log-bin = mysql-bin # binlog记录内容的方式,记录被操作的每一行 binlog_format = ROW # 减少记录日志的内容,只记录受影响的列 binlog_row_image = minimal # 指定需要同步复制的数据库名,不指定其它库都会同步操作 binlog-do-db = lagou #忽略的库 binlog_ignore-db=performance_schema binlog_ignore-db=information_schema binlog_ignore-db=sys
-
从库配置:
[mysqld] datadir=/usr/local/mysql/data log-error=/usr/local/mysql/data/error.log port = 3306 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES symbolic-links=0 max_connections=400 innodb_file_per_table=1 #表名大小写不明感,敏感为 lower_case_table_names=1 #主从配置 #服务的唯一编号 server-id=2 #每次执行写入操作binlog和磁盘同步 sync-binlog=1 # 开启mysql binlog功能 log-bin = mysql-bin # binlog记录内容的方式,记录被操作的每一行 binlog_format = ROW # 减少记录日志的内容,只记录受影响的列 binlog_row_image = minimal # 指定需要同步复制的数据库名,不指定其它库都会同步操作 binlog-do-db = lagou #忽略的库 binlog_ignore-db=performance_schema binlog_ignore-db=information_schema binlog_ignore-db=sys #修改从库relay log名字 relay_log=mysql-relay-bin #修改只读 read_only=1
-
-
服务重启 systemctl restart mysqld
-
开放远程连接权限,进入mysql命令行:
- grant replication slave on . to ‘root’@’%’ identified by ‘root’;
- grant all privileges on . to ‘root’@’%’ identified by ‘root’; flush privileges;
- show master status;
-
修改从库配置信息:
-
指定唯一服务id:server-id
-
修改从库relay log名字:relay_log=mysql-relay-bin
-
修改只读:read_only=1
注意:普通的应用用户进行insert、update、delete等会产生数据变化的DML操作时,都会报出数据库处于只读模式不能发生数据变化的错误,但具有super权限的用户,例如在本地或远程通过root用户登录到数据库,还是可以进行数据变化的DML操作;
-
-
配置master连接,进入mysql命令行:
-
change master to master_host=‘39.96.204.209’, master_port=3306,master_user=‘root’,master_password=‘root’,master_log_file=‘mysql-bin.000001’,master_log_pos=154;
注意master_log_pos配置信息可以在master的mysql中查看
-
开启从库:start slave;
-
查看转态:show slave status \G;
-
-
创建数据库表:
- CREATE TABLE
position_detail
(
id
int(11) NOT NULL AUTO_INCREMENT,
pid
int(11) DEFAULT NULL,
description
text,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; - CREATE TABLE
position
(
id
int(8) NOT NULL AUTO_INCREMENT,
name
varchar(255) DEFAULT NULL,
salary
varchar(10) DEFAULT NULL,
city
varchar(255) DEFAULT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- CREATE TABLE
-
查看创建的数据表是否同步到从库中,至此主从搭建完成
主从搭建-半同步复制方式
-
安装插件,进入mysql命令行,记得主从都需要安装插件:
-
查看是否支持动态加载:select @@have_dynamic_loading;
-
查看插件:show plugins;
-
安装插件:install plugin rpl_semi_sync_master soname ‘semisync_master.so’;
-
查看半同步复制参数信息:show variables like ‘%semi%’;
-
开启半同步OFF->NO,以及设置temeout:
- set global rpl_semi_sync_master_enabled=1;
- set global rpl_semi_sync_master_timeout=1000;
- show variables like ‘%semi%’;
-
命令行重启从库重启:
- stop slave;
- start slave;
-
在主库添加写,从库查看是否正常,如果发现从库没有同步
-
show slave status \G;
)
由于主键冲突导致日志同步失败,删除冲突数据即可。
从库冲突错误:https://www.cnblogs.com/langdashu/p/5920436.html
-
-
MHA高可用架构搭建
-
使用三台机器来完成本次MHA的搭建:
IP 主机名 系统版本 角色 节点 172.25.5.1 weijie1 Centos master node node1 172.25.5.2 weijie2 Centos slave1 node node2 172.25.5.3 weijie3 Centos slave2 node+manager node3
-
MHA下载:
wget https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-manager-0.58.tar.gz wget https://github.com/yoshinorim/mha4mysql-node/releases/download/v0.58/mha4mysql-node-0.58.tar.gz
-
配置集群免密登录:所有节点都要操作
cd /root/.ssh/ ssh-keygen -t dsa -P '' -f id_dsa cat id_dsa.pub >> authorized_keys
-
主库接收slave上的密钥
scp 172.25.5.3:/root/.ssh/authorized_keys ./authorized_keys.3 scp 172.25.5.4:/root/.ssh/authorized_keys ./authorized_keys.4
MHA没有搭建成功,日后补充吧!!!