最近需要将公司的d、t、p环境的mysql集群做梳理工作,所以就促使了自己对于mysql主从以及mycat读写分离的安装做了如下总结
1、查看系统中是否自带安装mysql yum list installed | grep mysql
2、删除系统自带的mysql及其依赖(防止冲突) yum -y remove mysql-libs.x86_64
3、安装wget命令 yum install wget -y
4、给CentOS添加rpm源,并且选择较新的源 wget dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
5、安装下载好的rpm文件 yum install mysql-community-release-el7-5.noarch.rpm -y
6、安装成功之后,会在/etc/yum.repos.d/文件夹下增加两个文件 cd /etc/yum.repos.d/
7、mysql-community.repo文件可做适当修改,根据需求来定就好,不修改默认也行
8、使用yum安装mysql yum install -y mysql-server
9、启动mysql服务 service mysqld start 查看临时登录密码:cat /var/log/mysqld.log | grep password
10、登录mysql(如果使用临时登录密码登录还不上的话:vi /etc/my.cnf 文件中加入一行skip-grant-tables登录的时候就可以不用密码了) mysql -uroot -p
输入上面查询到的临时登录密码
11.修改密码(在 mysql> 这样的状态下执行如下命令)
alter user user() identified by “XXX你的密码”;
授权: GRANT ALL PRIVILEGES ON . TO ‘root’@’%’IDENTIFIED BY ‘XXX你的密码’ WITH GRANT OPTION;
修改密码: ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘XXX你的密码’;
查询一下user表查看是否修改成功: select user,host from user where user=‘root’;
成功之后再次更新一下权限: flush privileges;
12、开放3306这个端口号 查看想开的端口是否已开:firewall-cmd –query-port=3306/tcp 添加指定需要开放的端口:firewall-cmd –add-port=3306/tcp –permanent 重载入添加的端口:firewall-cmd –reload 查询指定端口是否开启成功:firewall-cmd –query-port=3306/tcp
1.1.修改配置文件,编辑配置文件命令 vim /etc/my.cnf 1.2.增加如下内容(esc wq! 保存文件):
#配置MySQL主从复制 log-bin=mysql-bin #和从服务要区分开就好 server-id=60252 #设置同步库 binlog-ignore-db=information_schema binlog-ignore-db=cluster binlog-ignore-db=mysql
#mode规则 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#配置federated存储引擎(支持外链表,如果业务没用到也可以不加这个配置) federated
#忽略表中名称的大小写 lower_case_table_names=1
#配置默认编码为utf8 character_set_server=utf8 init_connect=‘SET NAMES utf8’
1.3.重启主服务器的mysqld服务 service mysqld restart 1.4.登录mysql数据库 mysql -uroot -p 1.5.查看master的状态(执行后,Position 下的值记录下来,用作从机首次拉取文件) show master status;
2.1.修改配置文件,编辑配置文件命令 vi /etc/my.cnf
2.2.增加如下内容(esc wq! 保存文件):
#配置MySQL主从复制 log-bin=mysql-bin server-id=60251 #启用中继日志文件 relay-log=mysql-relay binlog-ignore-db=information_schema binlog-ignore-db=cluster binlog-ignore-db=mysql
replicate-ignore-db=mysql log-slave-updates slave-skip-errors=all slave-net-timeout=60
#mode规则 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#配置federated存储引擎(支持外链表,如果业务没用到也可以不加这个配置) federated
#忽略表中名称的大小写 lower_case_table_names=1
#配置默认编码为utf8 character_set_server=utf8 init_connect=‘SET NAMES utf8’
2.3.重启从服务器并进行相关配置 service mysqld restart
2.4.登录mysql mysql -uroot -p
2.5.配置从服务器登录主服务器的账号授权 2.5.1.授权操作 grant replication slave on . to ‘root’@‘%’ identified by ‘XXX你的密码’;
2.5.2.刷新权限 flush privileges;
2.6.连接主服务器首次同步(“主服务器ip”、“XXX你的密码”、”步骤1.5.中主机查询出来的值”都需要修改) change master to master_host=‘主服务器ip’,master_user=‘root’,master_password=‘XXX你的密码’,master_port=3306,master_log_file=‘master-bin.000001’,master_log_pos=步骤1.5.中主机查询出来的值;
2.7.启动slave start slave;
2.8.slave备用命令 停止slave stop slave; #设置slave(用来清除残留文件) reset slave;
2.9.查看slave的状态(注意这个命令最后没有分号;Slave_IO_Running: Yes Slave_SQL_Running: Yes,显示这两个状态为Yes表示正常) show slave status\G
1.如下地址查找版本号: http://dl.mycat.org.cn
2.下载mycat的安装包 wget http://dl.mycat.org.cn/1.6.7.4/Mycat-server-1.6.7.4-release/Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz
3.解压 tar -zxvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz
4.配置文件修改(参考) conf/schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="库名" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1" >
</schema>
<dataNode name="dn1" dataHost="mycatip" database="库名" />
<dataHost name="mycatip" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="masterip" url="masterip:3306" user="root" password="XXX">
<readHost host="slaveip" url="slaveip:3306" user="root" password="XXX" ></readHost>
</writeHost>
</dataHost>
</mycat:schema>
conf/server.xml
5.启动mycat …/bin/mycat start …/bin/mycat stop
6.查看是否启动成功 ps aux|grep mycat
7.开通mycat的8066端口号 查看想开的端口是否已开:firewall-cmd –query-port=8066/tcp 添加指定需要开放的端口:firewall-cmd –add-port=8066/tcp –permanent 重载入添加的端口:firewall-cmd –reload 查询指定端口是否开启成功:firewall-cmd –query-port=8066/tcp
1.主服务器执行库、表创建,查看从库是否同步(具体命令不再赘述)
2.主服务器执行数据的增、删、改查看从库是否同步(具体命令不再赘述)
3.主从服务器中执行如下语句,临时打开日志文件以便于查看执行的sql语句 SET GLOBAL general_log=ON;//打开数据库的日志功能 SHOW VARIABLES LIKE ‘log_output’; //这是为了查看log_output是什么输出方式,默认是file SET GLOBAL log_output=‘TABLE’;//这里我们修改成数据表的输出方式。
4.mycat服务器进行数据的增、删、改、查操作(具体命令不再赘述)
5.主服务器查看是否只有增、删、改语句 SELECT event_time,command_type,convert(argument using utf8mb4) as argument from mysql.general_log ORDER BY event_time desc limit 0,100
6.从服务器查看是否只有查语句 SELECT event_time,command_type,convert(argument using utf8mb4) as argument from mysql.general_log ORDER BY event_time desc limit 0,100
1.通过将这些命令组成脚本来提高效率 2.通过镜像+文件修改的脚本来提高效率 3.过程中明确操作的每一项的边界,其中涉及到的带分号的命令,和不能带分号的命令,以及它们为什么是这样的思考? 4.验证的边界,以及验证的对应脚本 5.自己的这些操作还需要再明确和梳理每一个配置的意义,以及每一步操作步骤的意义
第一次安装借助同事的简易文档,一边梳理一边安装大概历史2h;自己整理完之后,又进行了一次安装+验证工作大概半小时以内,并且也思考了如何提升到十分钟以内,以及如何也可以让任何一个同事在十分钟以内做到这个事情,我想这就是迭代的过程吧
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/184078.html原文链接:https://javaforall.cn