一、安装mysql
将mysql安装包上传到服务安装目录上
解压得并重命名为mysql
tar zxvf mysql-5.7.37-el7-x86_64.tar.gz
mv mysql-5.7.37-el7-x86_64 mysql
创建mysql用户及组
groupadd mysql //添加mysql组
useradd mysql -g mysql //添加mysql用户
创建mysql的data目录,并授权
[root@bogon home]# cd mysql
[root@bogon mysql]# mkdir data
[root@bogon mysql]# chown mysql:mysql * //授权mysql整个目录为mysql用户组及用户
初始化mysql,记住临时密码
[root@bogon mysql]# bin/mysqld --initialize --user=mysql --basedir=/home/mysql/mysql --datadir=/home/mysql/data
[root@bogon mysql]#
修改my.cnf配置文件,通过mysql官网可以知道,从版本5.7.18开始,mysql免安装版二进制包中就不包含该文件了,即不需要my.cnf文件也可以正常运行;my.cnf文件中配置的选项会在命令行启动mysql的时候作为参数进行启动,为了后面搭建mysql主从环境方便,下面可以添加了一个简单的my.cnf文件作为实例(如果只是单纯的搭建一个mysql实例,可以直接忽略此步骤),使用vim /etc/my.cnf命令,如果在该目录上不存在则会新建
vim /etc/my.cnf
[mysqld]
lower_case_table_names=1
datadir =/home/mysql/data
socket =/home/mysql/mysql.sock
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
character_set_server=utf8
init_connect='SET NAMES gbk'
[mysql]
default-character-set=gbk
[client]
socket =/home/mysql/mysql.sock
将mysql添加至开机启动
[root@bogon mysql]# cp ./support-files/mysql.server /etc/init.d/mysql
修改mysql,使用vim /etc/init.d/mysql 命令 修改以下代码部分
basedir=/home/mysql //此项为mysql的安装目录
datadir=/home/mysql/data //此项为mysql数据库存放的目录
设置开机启动
[root@bogon mysql]# chkconfig --add mysql
到这一步,mysql已经算是安装完毕了,接下来使用以下命令启动mysql
[root@bogon mysql]# service mysql start
Starting MySQL.. SUCCESS!
[root@bogon mysql]#如果启动时报错
[root@skapp etc]# mysql -uroot -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
这是由于my.cnf配置里的.sock位置未在/tmp/mysql.sock 里,需要做一下软连接,或检查my.cof配置文件中是否没有设置[client]的参数socket[client]
socket =/home/mysql/mysql.sock临时解决办法: ln -s /tmp/mysql.sock /home/mysql/mysql.sock
为了可以在任意目录上都可以使用mysql命令登录mysql,将mysql安装目录配置到环境变量中,在vim /etc/profile文件的末尾添加以下代码
export PATH=$PATH:/home/mysql/bin
保存后使配置文件的配置立即生效 [root@bogon mysql]# source /etc/profile
重启mysql服务,并且使用mysql的root用户登录mysql,密码在初始化时的那个
修改root用户的密码为root,并且刷新,设置允许root用户远程连接数据库
mysql> alter user 'root'@'localhost' identified by 'root';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changedmysql> update user set user.Host='%' where user.User='root';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
二、安装mycat
1、MySQL主从配置
主数据库:172.16.10.42 ,从数据库:172.16.10.43
参考 MySQL5.7主从复制环境搭建
2、下载MyCat mycat-1.6.7 (使用mycat需要先安装JDK)
http://www.mycat.io/
http://www.mycat.org.cn/
Linux安装JDK详细过程
3、解压mycat并修改配置文件
1、修改 conf/schema.xml (此配置文件为调用读写库的配置文件) 配置数据库相关内容
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
select user()
2、修改 conf/server.xml 配置MyCat用户名和密码
123456
skdata
skdata
3、启动MyCat
在mycat目录bin下面文件都加上执行权限
[root@bogon mycat]# cd /usr/local/mycat/bin
[root@bogon mycat]# chmod +x *
[root@bogon bin]# ll
总用量 384
-rwxr-xr-x. 1 root root 3658 3月 8 14:28 dataMigrate.sh
-rwxr-xr-x. 1 root root 1272 3月 8 14:28 init_zk_data.sh
-rwxr-xr-x. 1 root root 15701 3月 8 14:28 mycat
-rwxr-xr-x. 1 root root 2986 3月 8 14:28 rehash.sh
-rwxr-xr-x. 1 root root 2526 3月 8 14:28 startup_nowrap.sh
-rwxr-xr-x. 1 root root 140198 3月 8 14:28 wrapper-linux-ppc-64
-rwxr-xr-x. 1 root root 99401 3月 8 14:28 wrapper-linux-x86-32
-rwxr-xr-x. 1 root root 111027 3月 8 14:28 wrapper-linux-x86-64
[root@bogon bin]# ./mycat start
Starting Mycat-server...
[root@bogon bin]# ps -ef| grep mycat
查看日志:
cd /usr/local/mycat/logs
tail -100f ./wrapper.log
tail -100f ./logs/wrapper.log
4、连接测试
6、相关配置
参考MyCat官方文档: MyCat权威指南 http://dl.mycat.org.cn/mycat-definitive-guide.pdf
dataHost 标签的相关属性
7.6.4 balance 属性
负载均衡类型,目前的取值有 3 种:
1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
2. balance="1",全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双
主双从模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载
均衡。
3. balance="2",所有读操作都随机的在 writeHost、readhost 上分发。
4. balance="3",所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力,
注意 balance=3 只在 1.4 及其以后版本有,1.3 没有。7.6.5 writeType 属性
负载均衡类型,目前的取值有 3 种:
1. writeType="0", 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个 writeHost,
重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .
2. writeType="1",所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐。switchType 属
性
- -1 表示不自动切换。
- 1 默认值,自动切换。
- 2 基于 MySQL 主从同步的状态决定是否切换7.6.8 switchType 属性
-1 表示不自动切换
1 默认值,自动切换
2 基于 MySQL 主从同步的状态决定是否切换
心跳语句为 show slave status
3 基于 MySQL galary cluster 的切换机制(适合集群)(1.4.1)
心跳语句为 show status like ‘wsrep%’7.7.1 writeHost 标签、readHost 标签
这两个标签都指定后端数据库的相关配置给 mycat,用于实例化后端连接池。唯一不同的是,writeHost 指
定写实例、readHost 指定读实例,组着这些读写实例来满足系统的要求。
78
在一个 dataHost 内可以定义多个 writeHost 和 readHost。但是,如果 writeHost 指定的后端数据库宕机,
那么这个 writeHost 绑定的所有 readHost 都将不可用。另一方面,由于这个 writeHost 宕机系统会自动的检测
到,并切换到备用的 writeHost 上去。更多介绍参考官方文档
转载自:MyCat配置MySQL读写分离--入门_...-CSDN博客_mycat读写分离配置