//1).安装数据库
yum install mariadb-server
//2).启动数据库
systemctl start mariadb
//3).配置数据库
mysql_secure_installation
//4).开放数据库的对外访问权限
mysql -u root -p
use mysql;
select host,user from user;
update user set host="%" where host = "localhost";
//操作mysql库中的user表 修改数据库信息 之后重启数据库/刷新权限
flush privileges;
//5).导入jtdb的数据库
操作防火墙
//1).配置开关 标识防火墙的以后的操作
systemctl disable firewalld.service
//2).临时操作 操作防火墙现在的状态
systemctl stop firewalld.service
//3).检查防火墙状态
firewall-cmd --state
部署服务器
1).配置JDK tar -xvf jdk-8u51-linux-x64.tar.gz vim /etc/profile source /etc/profile
2).部署服务项 8081/8082/8083
3).设定后台启动
4).设定脚本启动
安装nginx
1).下载nginx安装包
2).配置/编译/安装 ./configure make make install
3).查找nginx工作目录
4).启动nginx
5).配置nginx配置文件 实现反向代理
冷备份说明: 定期将数据库内容进行转储. 弊端:可能丢失数据. 公司中也会采用冷备份的方式以防万一.
特点:可以保证数据的实时备份.
工作原理说明:
1.数据库主库将更新的数据信息写入到二进制日志文件中.
2.数据库从库通过IO线程去主库中获取二进制文件修改内容. 之后写入到中继日志中
3.数据库从库中的Sql线程读取中继日志中的信息,实现数据的同步.
并且为了降低组件之间的耦合性,采用异步的方式处理.
规定: 主机IP地址 192.168.126.129 从机 192.168.126.130
//进入修改IP地址目录
cd /etc/sysconfig/network-scripts/
//打开ifcfg-ens33
vim ifcfg-ens33
//将ip修改为192.168.126.130
//然后保存配置
service network restart
//查看是否成功
ip addr
vim /etc/my.cnf
添加
server-id=1
log-bin=mysql-bin
//mysql-bin是自定义名字
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
server-id=1
log-bin=mysql-bin
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
//数据库工作目录
cd /var/lib/mysql/
//重启数据库
systemctl restart mariadb
vim /etc/my.cnf
添加
server-id=2
log-bin=mysql-bin
//mysql-bin是自定义名字
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
server-id=2
log-bin=mysql-bin
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
//数据库工作目录
cd /var/lib/mysql/
//重启数据库
systemctl restart mariadb
/* 我是主库 129*/
SHOW MASTER STATUS
注:
一个一个执行
/* 从机130 实现主从挂载host,port,user,password,二进制文件*/
CHANGE MASTER TO MASTER_HOST="192.168.126.129",
MASTER_PORT=3306,
MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000001",
MASTER_LOG_POS=245;
/*开启主从服务*/
START SLAVE;
/*检查主从同步状态*/
SHOW SLAVE STATUS;
1. 支持SQL92标准
2. 支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法
3. 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。
4. 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。
5. 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster
6. 基于Nio实现,有效管理线程,解决高并发问题。
7. 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。
8. 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。
9. 支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。
10. 支持多租户方案。
11. 支持分布式事务(弱xa)。
12. 支持XA分布式事务(1.6.5)。
13. 支持全局序列号,解决分布式下的主键生成问题。
14. 分片规则丰富,插件化开发,易于扩展。
15. 强大的web,命令行监控。
16. 支持前端作为MySQL通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。
17. 支持密码加密
18. 支持服务降级
19. 支持IP白名单
20. 支持SQL黑名单、sql注入攻击拦截
21. 支持prepare预编译指令(1.6)
22. 支持非堆内存(Direct Memory)聚合计算(1.6)
23. 支持PostgreSQL的native协议(1.6)
24. 支持mysql和oracle存储过程,out参数、多结果集返回(1.6)
25. 支持zookeeper协调主从切换、zk序列、配置zk化(1.6)
26. 支持库内分表(1.6)
27. 集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)
//进入src
cd /usr/local/src
//安装包拉进来
//解压
tar -zxvf mycat.tar.gz
//删除安装包
rm mycat.tar.gz
<user name="root">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
<!-- 表级 DML 权限设置 -->
<!--
<privileges check="false">
<schema name="TESTDB" dml="0110" >
<table name="tb01" dml="0000"></table>
<table name="tb02" dml="1111"></table>
</schema>
</privileges>
-->
</user>
<user name="user">
<property name="password">user</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>
=====修改成=====
<!--用户标签-->
<user name="root">
<property name="password">root</property>
<!--与schema.xml中的配置相同 注意数据库的大小写-->
<property name="schemas">jtdb</property>
</user>
<user name="user">
<property name="password">user</property>
<property name="schemas">jtdb</property>
<property name="readOnly">true</property>
</user>
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--name属性是自定义的 dataNode表示数据库的节点信息 jtdb表示逻辑库-->
<schema name="jtdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="jtdb"/>
<!--定义节点名称/节点主机/数据名称-->
<dataNode name="jtdb" dataHost="localhost1" database="jtdb" />
<!--参数介绍-->
<!--balance 0表示所有的读操作都会发往writeHost主机 -->
<!--1表示所有的读操作发往readHost和闲置的主节点中-->
<!--writeType=0 所有的写操作都发往第一个writeHost主机-->
<!--writeType=1 所有的写操作随机发往writeHost中-->
<!--dbType 表示数据库类型 mysql/oracle-->
<!--dbDriver="native" 固定参数 不变-->
<!--switchType=-1 表示不自动切换, 主机宕机后不会自动切换从节点-->
<!--switchType=1 表示会自动切换(默认值)如果第一个主节点宕机后,Mycat会进行3次心跳检测,如果3次都没有响应,则会自动切换到第二个主节点-->
<!--并且会更新/conf/dnindex.properties文件的主节点信息 localhost1=0 表示第一个节点.该文件不要随意修改否则会出现大问题-->
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select 1</heartbeat>
<!--配置第一台主机主要进行写库操作,在默认的条件下Mycat主要操作第一台主机在第一台主机中已经实现了读写分离.因为默认写操作会发往137的数据库.读的操作默认发往141.如果从节点比较忙,则主节点分担部分压力.
-->
<writeHost host="hostM1" url="192.168.126.129:3306" user="root" password="root">
<!--读数据库1-->
<readHost host="hostS1" url="192.168.126.130:3306" user="root" password="root" />
<!--读数据库2-->
<readHost host="hostS2" url="192.168.126.129:3306" user="root" password="root" />
</writeHost>
<!--定义第二台主机 由于数据库内部已经实现了双机热备.-->
<!--Mycat实现高可用.当第一个主机137宕机后.mycat会自动发出心跳检测.检测3次.-->
<!--如果主机137没有给Mycat响应则判断主机死亡.则回启东第二台主机继续为用户提供服务.-->
<!--如果137主机恢复之后则处于等待状态.如果141宕机则137再次持续为用户提供服务.-->
<!--前提:实现双机热备.-->
<!-- <writeHost host="hostM2" url="192.168.126.130:3306" user="root" password="root">-->
<!--读数据库1-->
<!-- <readHost host="hostS1" url="192.168.126.130:3306" user="root" password="root" />-->
<!--读数据库2-->
<!-- <readHost host="hostS2" url="192.168.126.129:3306" user="root" password="root" />
</writeHost>-->
</dataHost>
</mycat:schema>
//启动mycat
./mycat start
//如下:
[root@localhost src]# cd mycat
[root@localhost mycat]# ls
bin catlet conf lib logs version.txt
[root@localhost mycat]# cd bin
[root@localhost bin]# ls
dataMigrate.sh init_zk_data.sh mycat rehash.sh startup_nowrap.sh wrapper-linux-ppc-64 wrapper-linux-x86-32 wrapper-linux-x86-64
[root@localhost bin]# ./mycat
Usage: ./mycat { console | start | stop | restart | status | dump }
[root@localhost bin]# ./mycat start
Starting Mycat-server...
spring:
datasource:
#引入druid数据源
#type: com.alibaba.druid.pool.DruidDataSource
#driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.126.129:8066/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
username: root
password: root
启动程序链接数据库,检查数据访问是否正常。之后修改从库信息 检查负载均衡是否正确。
/* 我是主库 129*/
SHOW MASTER STATUS;
/*我之前是主库 现在是从库*/
CHANGE MASTER TO
MASTER_HOST="192.168.126.130",
MASTER_PORT=3306,
MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000001",
MASTER_LOG_POS=245;
/*开启主从服务*/
START SLAVE;
/*检查主从同步状态*/
SHOW SLAVE STATUS;
/* 从机130 实现主从挂载host,port,user,password,二进制文件*/
CHANGE MASTER TO
MASTER_HOST="192.168.126.129",
MASTER_PORT=3306,
MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000001",
MASTER_LOG_POS=2065;
/*开启主从服务*/
START SLAVE;
/*检查主从同步状态*/
SHOW SLAVE STATUS;
/* 翻身当主库 */
SHOW MASTER STATUS;
<writeHost host="hostM2" url="192.168.126.130:3306" user="root" password="root">-
<!--读数据库1-->
<readHost host="hostS1" url="192.168.126.130:3306" user="root" password="root" />
<!--读数据库2-->
<readHost host="hostS2" url="192.168.126.129:3306" user="root" password="root" />
</writeHost>