1、安装mysql的三种方式mysql
安装 Percona 分支版本的 MySQL。性能超越标准的 MySQL。linux
上传解压
首先安装 cmake
yum –y install cmake //也须要安装 gcc-c++,openssl openssl-devel。
前面已经安装。
cd /usr/local/src/
mkdir mysql
cd mysql /
rz 上传安装包
tar -xvf Percona-Server-5.6.24-72.2-r8d0f85b-el6-x86_64-bundle.tar
rpm -ivh Percona-Server-56-debuginfo-5.6.24-rel72.2.el6.x86_64.rpm
rpm -ivh Percona-Server-shared-56-5.6.24-rel72.2.el6.x86_64.rpm
rpm -ivh Percona-Server-client-56-5.6.24-rel72.2.el6.x86_64.rpm
rpm –ivh Percona-Server-server-56-5.6.24-rel72.2.el6.x86_64.rpm
安装顺序:rpm 包不少,只需安装 debuginfo 、shared、client、serverc++
安装目录
配置文件路径 /etc/my.cnf
注意:安装完成后,会将配置文件放在 etc 目录下
vi /etc/my.cnf
数据文件路径:/var/lib/mysql
5.3.3 启动服务
service mysql start //自动安装到它本身制定的目录下,注册服务为 mysql
service mysql status
service mysql stop
配置开机启动:
chkconfig --list //展示开机的服务
5.3.4 修改 root 密码
默认没有密码不安全:
mysqladmin –u root password "root"
Warning 警告提示,忽略便可。
登陆:
mysql –uroot –proot
已经有密码进行修改
mysql> use mysql;
mysql> update user set password=PASSWORD('root') where user='root';
mysql> flush privileges;
5.3.5 验证是否成功安装
use mysql //打开 mysql 数据库
show tables //查看 mysql 数据库下的表
注意:Percona 安装和 mysql 正式版的安装,在依赖上有区别。
5.3.6 打开 3306 端口
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
/etc/rc.d/init.d/iptables save #修改生效
/etc/init.d/iptables status #查看配置
5.3.7 执行数据库的脚本
建立库和数据库表及数据
mysql>use jtdb;
mysql>set names utf8; #防止乱码
mysql>source jtdb.sql;
5.3.8 拓展:如何快速导入大数据库备份文件
导入 sql 文件很是慢的问题
查看目标数据库的参数
#客户端/服务器之间通讯的缓冲区的最大大小
show variables like 'max_allowed_packet';
#TCP/IP 和套接字通讯缓冲区大小,建立长度达 net_buffer_length 行
show variables like 'net_buffer_length';
导出 sql 文件时指定参数
mysqldump -uroot -p 数 据 库 名 -e --max_allowed_packet=4194304
--net_buffer_length=16384 > sql 文件路径
导入 sql 文件
use 目标数据库
source /usr/local/src/lotteryanalysis.sql
5.3.9 查看有多少表,每张表有多少记录
mysql 5.6 中的 information schema,就是存储了不少数据库的元数据,其实不少可
以用来作数据库的性能查询用。
USE information_schema;
SELECT table_name,table_rows FROM TABLES
WHERE TABLE_SCHEMA = 'jtdb'
ORDER BY table_rows DESC;
注意: 1 mysql 内部缘由,统计不许确
5.3.10 开启 MYSQL 远程访问权限
语法:
grant [权限] on [数据库名].[表名] to ['用户名']@['web 服务器的 ip 地址']
identified by ['密码'];
grant all on *.* to 'root'@'%' identified by 'root';
或者指定 IP 地址
grant all on *.* to 'root'@'192.168.1.103' identified by 'root';
1
5.3.11 安装第二台 MYSQL 服务器
上 传 Percona-Server-5.6.24-72.2-r8d0f85b-el6-x86_64-bundle.tar 到
/usr/local/src/mysql 解压后造成 7 个 rpm 包。
复制第一台的虚拟机,按上面配置后,开放端口,配置远程访问权限。
4 5.4 常见问题
5.4.1 PID file could not be found
mysql 没法启动 ERROR! MySQL is running but PID file could not be found ?
Can't connect to local MySQL server through socket
'/var/lib/mysql/mysql.sock'
解决办法:
ps aux | grep mysql
kill -9 pid1 pid2 #pid1,pid2 为具体的查询出来的端口
service mysql start 或者 /etc/init.d/mysql start
5.4.2 提示 uuid 重复
因为 data 拷贝是全目录拷贝,将/var/lib/mysql/auto.cnf 也拷贝,它里面记录了
对数据库的一个 uuid 标识,随便产生个新的 uuid,替换掉新目录中的 auto.cnf 中的 uuid
串便可。
能够用 select uuid()来产生新值,手工黏贴到 auto.cnf 文件中。
5.4.3 The server quit without updating PID file
Starting MySQL...The server quit without updating PID file
(/usr/local/mysql/data/snsgou.pid)
问题可能的缘由有多种,具体什么缘由最好的办法是先查看下错误日志:
一、多是/usr/local/mysql/data/mysql.pid 文件没有写的权限
解决方法 :给予权限,执行 “chown -R mysql:mysql /var/data” “chmod -R 755
/usr/local/mysql/data” 而后从新启动 mysqld!
二、可能进程里已经存在 mysql 进程
解决方法:用命令“ps -ef|grep mysqld”查看是否有 mysqld 进程,若是有使用“kill
-9 进程号”杀死,而后从新启动 mysqld!
三、多是第二次在机器上安装 mysql,有残余数据影响了服务的启动。
解决方法:去 mysql 的数据目录/data 看看,若是存在 mysql-bin.index,就赶快把
它删除掉吧,它就是罪魁祸首了。本人就是使用第三条方法解决的 !
四、mysql 在启动时没有指定配置文件时会使用/etc/my.cnf 配置文件,请打开这个文
件查看在[mysqld]节下有没有指定数据目录(datadir)。
解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data
五、skip-federated 字段问题
解决方法:检查一下/etc/my.cnf 文件中有没有没被注释掉的 skip-federated 字段,
若是有就当即注释掉吧。
六、错误日志目录不存在
解决方法:使用“chown” “chmod”命令赋予 mysql 全部者及权限
七、selinux 惹的祸,若是是 centos 系统,默认会开启 selinux
解决方法:关闭它,打开/etc/selinux/config,把 SELINUX=enforcing 改成
SELINUX=disabled 后存盘退出重启机器试试。
5 5.5 主从复制 x Linux 版本
5.5.1 配置主服务器
编辑主 master 服务器配置文件/etc/my.cnf
在[mysqld]节点下加入两句话
server-id=1
log-bin=mysql-bin #启用二进制日志;
重启服务:service mysql restart
登陆 mysql:mysql –uroot -proot
mysql>flush tables with read lock; #数据库锁表,不让写数据
mysql>show master status; #查看 MASTER 状态(这两个值 File 和 Position)
mysql>unlock tables; #从启动好后,记得要解除锁定
5.5.2 配置从服务器
修改/etc/my.cnf 增长一行
server-id=2
重启服务
service mysql restart
经过 mysql 命令配置同步日志的指向:
change master to master_host='192.168.170.43', master_port=3306,
master_user='root',master_password='root',
master_log_file='mysql-bin.000007',
master_log_pos=609;
master_host 主服务器的 IP 地址
master_port 主服务器的 PORT 端口
master_log_file 和主服务器 show master status 中的 File 字段值相同
master_log_pos 和主服务器 show master status 中的 Position 字段值相同
5.5.3 启动从服务
start slave; #stop slave;中止服务,出错时先中止,再从新配置
show slave status\G; #查看 SLAVE 状态,\G 结果纵向显示。必须大写
service mysql restart #重启服务
注意:若是出错,能够看后面的错误信息。观察 Slave_SQL_Running_State 字段,
它会记录详细的错误信息。若是正常,上面两个线程执行都应该是 YES。这样当主库建立数
据库、建立表、插入数据时,从库都会马上同步,这样就实现了主从复制。
5.5.4 扩展:同步日志
binlog 基本定义:二进制日志,记录对数据发生或潜在发生更改的 SQL 语句,并以二
进制的形式保存到磁盘中。
做用:能够用来查看数据库的变动历史(具体的时间点全部的 SQL 操做)、数据库增量
备份和恢复(增量备份和局域时间点的恢复)、MySQL 的复制(主主数据库的复制、主从数
据库的复制)
二进制日志的信息:
1)文件位置:默认存放位置为数据库文件所在目录下 /var/lib/mysql
2)文件的命名方式:名称为 hostname-bin.xxxxx (重启 mysql 一次将会自动生成
一个新的 binlog)
3)状态的查看
mysql> show variables like '%log_bin%';
保存日志的格式是二进制不能直接查看,必须借助命令行工具才能阅读。mysql 自带了
mysqlbinlog 工具,通常放置在 mysql 安装目录下的 bin 目录下执行
mysqlbinlog mysql-bin.000001
后面那个参数是日志文件,日志文件通常放在 mysql 的数据库存储文件目录下,以配
置文件 log-bin 的值为文件名,一串 000001 这样的数字为扩展名。
拓展:从库只读主从复制还能够进行吗?
6 5.6 一主两从
5.6.1 一主多从
这种方案好处是对主的影响最小,但缺点是越日后的同步的时间越久。
注意:这两种方式的同步都会有时间差,在很是大的并发下,同步的时间差就会暴漏出
来,致使可能查询的数据读到脏数据。
因此最终解决方案应该是分布式。
5.6.2 主从从链条
这种结构不行。第二个从配置为第一个从的子节点。目的是,主修改数据,从 1 数据随
主修改,从 2 数据随从 1 修改。但实际中是实现不了的。现象为主修改,从 1 修改,从 2
不变。从 1 修改,从 2 才修改。
5.6.3 分布式数据库系统的优势
下降费用。分布式数据库在地理上能够式分布的。其系统的结构符合这种分布的要求。
容许用户在本身的本地录用、查询、维护等操做,实行局部控制,下降通讯代价,避免集中
式须要更高要求的硬件设备。并且分布式数据库在单台机器上面数据量较少,其响应速度明
显提高。
提升系统总体可用性。避免了由于单台数据库的故障而形成所有瘫痪的后果。
易于扩展处理能力和系统规模。分布式数据库系统的结构能够很容易地扩展系统,在分
布式数据库中增长一个新的节点,不影响现有系统的正常运行。这种方式比扩大集中式系统
要灵活经济。在集中式系统中扩大系统和系统升级,因为有硬件不兼容和软件改变困难等缺
点,升级的代价经常是昂贵和不可行的。
微信开源 PhxSQL
PhxSQL 是一个兼容 MySQL、服务高可用、数据强一致的关系型数据库集群。PhxSQL 以
单 Master 多 Slave 方式部署,在集群内超过一半机器存活的状况下,可自身实现自动
Master 切换,且保证数据一致性。PhxSQL 基于 Percona 5.6 开发。Percona 是 MySQL
的一个分支,功能和实现与 MySQL 基本一致。
5.6.4 配置步骤
1) 主从复制时,只需把从 slave01 复制一下便可,变成从 slave02。无需修改
server-id,无需修改 auto.cnf。
2) 修改配置文件
a)dbServer.xml
增长一个 dbServer 节点:
<dbServer name="slave02" parent="abstractServer">
<factoryConfig>
<!-- mysql ip -->
<property name="ipAddress">192.168.19.41</property>
</factoryConfig>
</dbServer>
修改 multiPool 配置
<dbServer name="multiPool" virtual="true">
<poolConfig
class="com.meidusa.amoeba.server.MultipleServerPool">
<!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED ,
3=HA-->
<property name="loadbalance">1</property>
<!-- Separated by commas,such as: server1,server2,server1
-->
<property
name="poolNames">slave02,slave01,master</property>
</poolConfig>
</dbServer>
注意:若是让 master 也负责读,就配置;若是 master 只负责写就从这里删除。
b)amoeba.xml
若是只是一个从就直接写从的名称也能够
<property name="readPool">slave01</property>
若是要配置多个从,就必须写 multiPool。引用 dbServer.xml 中配置的这个节点名
称
<property name="readPool">multiPool</property>web
一、rpm安装
二、源码安装
三、通用二进制源码安装sql
环境准备数据库
192.168.5.10 master1vim
192.158.5.20 slave1centos
2、配置master服务器,192.168.5.10
一、
第一步:登录mysql,给root帐号添加密码 //参考命令:SETPASSWORD = PASSWORD('pasword');
第二步:查看mysql版本号 //参考命令:select version();
第三步:添加Slave到本机同步的远程帐号 //参考命令:GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.5.10' IDENTIFIED BY 'SLAVE';
第四部:查看当前mysql的全部用户 //参考命令:select user,host,password from mysql.user;
第五步:删除帐号密码都为空的localhost帐号 //参考命令:drop user ''@'localhost';
第六部:删除帐号密码都为空的iz25ogxahfrz帐号 //参考命令:drop user ''@'iz25ogxahfrz';
第七步:退出mysql //参考命令:\q安全
二、编辑my.cnf配置文件 //参考命令:vim my.cnf服务器
三、
第一步:重启mysql服务 //参考命令:service mysql restart
第二步:以root用户+密码登录mysql //参考命令:mysql -uroot -ppassword
第三步:查看master的ID号 //参考命令:SHOW VARIABLES LIKE 'service_id';
第四部:查看当前master的File+pos信息,并记录下来 //参考命令:show master status;
3、配置Slave服务器,192.168.5.20
一、
第一步:登录mysql,给root帐号添加密码 //参考命令:SETPASSWORD = PASSWORD('pasword');
第二步:查看mysql版本号 //参考命令:select version();
第三步:查看当前mysql的全部用户 //参考命令:select user,host,password from mysql.user;
第四步:删除帐号密码都为空的localhost帐号 //参考命令:drop user ''@'localhost';
第五部:删除帐号密码都为空的iz25i0yer0yz帐号 //参考命令:drop user ''@'iz25i0yer0yz';
第六步:退出mysql //参考命令:\q
二、编辑slave服务器my.cnf配置文件 //参考命令:vim my.cnf
三、
第一步:重启mysql服务 //参考命令:service mysql restart
第二步:查看slave服务器的ID号 //参考命令:SHOW VARIABLES LIKE 'service_id';
第三步:查看slave同步状态 //参考命令:show slave status\G
第四部:关闭slave服务器,防止增删改查。 //参考命令:stop slave;
第五步:配置slave如何同步master的数据 //参考命令:change master to master_host='192.168.5.10', master_user='slave', master_password='slave', master_port=3306, master_log_file='master_bin.000001', master_log_pos=120;
第六部:打开slave服务器的各项功能 //参考命令:start slave;
四、查看slave的同步状态 //参考命令:show slave status\G
mysql主从配置完毕
4、安装Amoeba:依赖JAVA环境
JAVA安装
一、安装
二、给amoeba受权一个mysql远程帐户
mysql> GRANT ALL PRIVILEGES ON *.* TO 'amoeba'@'192.168.5.30' IDENTIFIED BY 'amoeba' WITH GRANT OPTION;
5、安装Amoeba:
6、配置:
一、配置Amoeba下的dbServers.xml
二、配置Amoeba下的amoeba.xml
7、启动Amoeba:
一、【最好是先用当前方式启动,可以看到启动是否有错误,排查完错误后在后台启动】
网上查了一些资料:JDK7启动对xss参数有最小值要求,必须大于228才能启动JVM
解决:
设置 -Xss256k 便可解决
1 #JVM_OPTIONS="-server -Xms256m -Xmx1024m -Xss196k -XX:PermSize=16m -XX:MaxPermSize=96m" 2 JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m"
# vim /usr/local/amoeba/jvm.properties
二、再次启动:又报错误,请细看
三、上图所示:我没有用正常的关闭方式关闭Amoeba服务致使的错误
而后KILL进程以后居然不抱错误了
因此此次长教训了
关闭Amoeba:
# /usr/local/amoeba/bin/shutdown
后台启动并把输出日志保存到/var/log/amoeba.log
# /usr/local/amoeba/bin/launcher > /var/log/amoeba.log 2>&1 &
8、登录测试:
一、因为30机器上并无安装mysql,因此找一台装有mysql的机器进行测试
mysql -uamoeba -p123456 -h192.168.0.251 -P8066 //指定端口的-P是大写的,不=同于其它。必定要注意大小写
二、登录成功,请自由测试。 测试方法: (1)amoeba建立库而后分别登录master、slave查看是否有刚建立的库 (2)stop master的mysql,再slave上建立库,不能则表示成功 (3)网上有更好的测试方法,不在一一列举。请自行查找。