优势:
1.运行速度快,体积小,命令执行的速度快
2.使用成本低,mysql 是开源的,且提供免费版本
3.使用容易,与其他大型数据库的设置和管理相比,其复杂程度较低,易于使用
4.可移植性强,能够运行与多种系统平台上,如windouws,Linux,同时提供多种 API 接口,支持多
种开发语言
优化的方式:
一,创建索引
二,选择合适的数据库引擎
1.MyISMA 是 MySQL 的默认存储引擎。MyISMA 不支持事务,不支持外键,优势是访问速度
快,对事务完整性没有要求或者以 SELECT、INSERT 为主的应用基本上都可以使用 MyISMA 引
擎。比较适合 Web、数据仓储等场景
2.InnoDB 存储引擎提供具有提交、回滚和崩溃恢复的事务安全,支持外键。对数据一致性要求
比较高或更新比较频繁的的应用可以选择 InnoDB。比较适合类似计费和财务系统等准确度要求
比较高的系统
3.MEMORY 存储引擎-内存数据库,服务重启数据会丢失。适用于那些内容变化不频繁的代码表
(常量表),或者作为统计结果的中间结果表。修改的数据不会写入磁盘
4.MERGE 存储引擎是一组 MyISMA 表的组合,这些 MyISMA 表的结构必须完全相同,MERGE
表本身没有数据,对 MERGE 表的操作实际上是对内部的 MyISMA 表进行的。较适合数据仓储
三,配置优化
1.缓存池
2.备份的方式
3.连接数
4.DNS 解析
四,语句的优化
五,排序优化
六,读写分离
七,变结构优化
mysql 与 redis 的区别:
1.类型上:mysql 是关系型数据库,redis 是缓存数据库
2.作用上:mysql 用于持久化的存储数据到硬盘,而 redis 用于存储使用较为频繁的数据到缓存中
3.需求不同,一般都是配合使用
安装:
1.安装:dnf install @mysql
2.启动:systemctl start mysqld
3.开机启动:systemctl enable --now mysqld
4.查看是否启动成功:systemctl status mysqld
5.添加密码及安全策略:mysql_secure_installation
1.选择密码验证策略等级,选择 0
2.输入两次新密码
3.确认继续使用密码,选择 y
4.移除匿名用户登录,选择 y
5.不允许 root 登录,选择 n
6.移除 test 数据库,选择 y
7.重新载入权限表,选择 y
6.登录:mysql -uroot -p密码
7.进入数据库输入:update user set host='%' where user='root';
8.刷新:flush privileges;
9.关闭 mysql 的 dns:vim /etc/my.cnf
[mysqld] skip-name-resolve
10.重启服务:systemctl restart mysqld
备份:
1.可以选择把整个文件打包压缩(冷备份)
2.把数据库保存在某个目录下,用 mysqldump 命令(热备份)
3.日志备份
1.编辑文件:vim /etc/my.cnf
log-bin=路径
2.重启服务
3.用 mysqlbinlog 这个命令恢复,需要注意的是更新包前一个数据包
主从复制:自带 ,主备 (都安装好 mysql,同时数据库已初始化)
1.主从服务器安装时间同步:
1.下安装包:rpm -ivh http://mirrors.wlnmp.com/centos/wlnmp-release-
centos.noarch.rpm
2.安装:yum install wntp
3.同步:ntpdate ntp1.aliyun.com
2.主服务器修改配置:vim /etc/my.cnf
log_bin = master-bin
log-slave-updates = true
server_id = 11
3.重启:systemctl restart mysqld
4.进入主服务器的数据库后创建从账户:
create user 'test'@'%' identified by '123456Aa.';
grant all on *.* to 'test'@'%';
(test 为账户,% 为所有,by 后面为密码)
5.刷新:flush privileges;
6.然后查看:show master status;
7.从服务器编辑配置文件:vim /etc/my.conf
server_id = 22 (有多个从,id 是不一样的)
8.重启:systemctl restart mysqld
9.进入数据库执行同步命令:
change master to master_host='103.138.75.5',master_user='test',master_password='123456Aa.',
master_log_file='master-bin.000001',master_log_pos=815;
(这是一条命令,host 为主服务器 ip,其余的对接起来)
10.启动同步:start slave;
11.查看状态:show slave status\G;
主从复制:多主 (使用 Galera + keepalived)
1.安装软件:下载链接(https://releases.galeracluster.com/)
注意:需要删除已安装的 mysql 以及 mariadb
2.启动数据库:systemctl start mysqld
3.开机启动:systemctl enable mysqld
4.从日志提取密码:grep -i 'temporary password' /var/log/mysqld.log
5.初始化:mysql_secure_installation
1.选择密码验证策略等级,选择 0
2.输入两次新密码
3.确认继续使用密码,选择 y
4.移除匿名用户登录,选择 y
5.不允许 root 登录,选择 n
6.移除 test 数据库,选择 y
7.重新载入权限表,选择 y
6.登录:mysql -uroot -p密码
7.进入数据库输入:update user set host='%' where user='root';
8.刷新:flush privileges;
9.关闭 mysql 的 dns:vim /etc/my.cnf
[mysqld] skip-name-resolve
10.关闭 selinux:setenforce 0
11.开机关闭:vim /etc/selinux/config
SELINUX=disable
12.防火墙放行:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=4444/tcp --permanent
firewall-cmd --zone=public --add-port=4567/tcp --permanent
firewall-cmd --zone=public --add-port=4567/udp --permanent
firewall-cmd --zone=public --add-port=4568/tcp --permanent
13.重载:firewall-cmd --reload
14.编辑文件:vim /etc/my.cnf
server-id=1 # 本机id,要确保唯一
wsrep_on=on # 启动wsrep
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so #要确认插件是存在的
wsrep_cluster_name="mysql_galera_cluster" #集群名称
wsrep_cluster_address="gcomm://192.168.58.129,192.168.58.130,192.168.58.131" #集群ip地址
wsrep_sst_method=rsync # 集群同步数据时使用的组件
wsrep_sst_auth=root:password # 集群同步数据时,使用的账号密码
wsrep_node_name=node1 # 本机主机名
wsrep_node_address="192.168.58.129" #本机的IP地址
注意:另外的机器修改 server-id,wsrep_node_name 以及 wsrep_node_address 即可
15.启动:/usr/bin/mysqld_bootstrap
注意:第一个节点这种方式启动,其余的是 systemctl start mysqld
16.执行完后进去数据库查看:show status like 'wsrep_cluster_size';
17.主从复制完成
18.配置负载均衡:
1.安装组件:yum install autoconf automake libtool gcc gcc-c++ make
2.下载链接:git https://github.com/codership/glb
3.安装:./bootstrap.sh
4.安装:./configure && make && make install
5.复制 GLB脚本文件:cp files/glbd.sh /etc/init.d/glb
6.复制 GLB配置文件:cp files/glbd.cfg /etc/sysconfig/glbd
7.编辑文件:vim /etc/sysconfig/glbd
LISTEN_ADDR="8010" # 监听客户端连接的地址
CONTROL_ADDR="127.0.0.1:8011" # 控制地址,用于显示GLB信息
CONTROL_FIFO="/var/run/glbd.fifo" # 控制FIFO文件
THREADS="4" # 连接池线程数
MAX_CONN=256 # 最大连接数
DEFAULT_TARGETS="192.168.58.129:3306 192.168.58.130:3306 192.168.58.131:3306"
# 目标服务器地址
OTHER_OPTIONS="--round-robin" # 轮询方式
8.启动:service glb start
19.安装 keepalived:yum install keepalived
20.编辑文件:vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL # 路由标识
vrrp_skip_check_adv_addr
vrrp_strict #注释即可 ping 通
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER # 定义初始状态,可以是MASTER或者BACKUP,只能一主
interface eth0 # 网卡名
virtual_router_id 51 # 虚拟路由ID,三台要确保一致,取值0到255
priority 200 # 优先级
advert_int 1 # 通告频率
authentication { # 通信认证机制,三台要确保一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { # 设置虚拟VIP地址,三台要确保一致
185.207.176.135
}
}
virtual_server 185.207.176.135 3306 {
delay_loop 6
lb_algo rr
lb_kind NAT
protocol TCP
real_server 103.138.75.5 3306 { #多台及写多个 real_server
weight 1
TCP_CHECK {
connect_port 3306
connect_timeout 3
nb_get_retty 3
delay_before_retry 3
}
}
21.防火墙策略:firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent
22.重载:firewall-cmd --reload
23.启动:systemctl start keepalived
24.开机自启:systemctl enable keepalived
25.查看网卡 ip ,注意只有一台上面有 vip
读写分离: 使用amoeba (jdk 安装1.6版本)
下载 JDK :https://www.oracle.com/java/technologies/java-se-glance.html
下载 amoeba :https://sourceforge.net/
1.把这两个安装包上传到机器上,然后安装 JDK
1.授权:chmod +x JDK 的包
2.解压:./JDK 的包
3.移动到指定路径并重命名:mv 解压的包 目标路径及名字
2.变量:vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.6 (JDK 包的路径)
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
export AMOEBA_HOME=/usr/local/amoeba/ (amoeba 包的路径)
export PATH=$PATH:$AMOEBA_HOME/bin
3.指定启动服务的软链接:
ln -sf JDK 包的服务路径 /usr/bin/java
ln -sf JDK 包的服务路径 /usr/bin/javac
4.立即生效:source /etc/profile
5.查看:java -version (版本应显示为1.6)
6.mysql 主服务器创建账号:create user 'test'@'%' identified by '123456Aa.';
7.授权:grant all on *.* to 'test'@'%';
(注意:test 为账户,% 为所有,by 后面为密码)
8.安装 amoeba:
1.创建目录:mkdir /usr/local/amoeba
2.解压:tar zxvf 安装包 刚刚创建目录的路径
3.进入目录:cd /usr/local/amoeba/
4.编辑文件:vim conf/dbServers.xml
5.编辑文件:vim conf/amoeba.xml
6.编辑文件:vim bin/amoeba
9.安装工具:yum install libnsl -y
10.启动:bin/amoeba start
11.开新窗口,查看:netstat -naltp | grep java