MYSQL集群搭建指引文档

MYSQL集群搭建指引文档
MYSQL集群搭建指引文档

在PCSERVER上安装MARIADB。

一、先检查主机的环境

如果主机已经安装了MYSQL的早期版本,并且有MYSQL实例正在主机上运行,要先行清理早期的版本,具体步骤如下:

1、优雅地停掉当前正在运行的MYSQL服务。

2、卸载MYSQL早期版本及其组件

rpm -qa|grep -i mysql #查看已经安装的mysql相关包

rpm -ev package_name #package_name包名比如:mysql-server-5.0.51b-1.el5 二、用YUM安装MARIADB

具体步骤如下:

1、cd /etc/yum.repos.d

2、vi MariaDB.repo然后粘上官网上的内容(用CENTOS操作系统举例)

Here is your custom MariaDB YUM repository entry for CentOS. Copy and paste it into a file under /etc/yum.repos.d/ (we suggest naming the file MariaDB.repo or something similar). See "Installing MariaDB with yum" for detailed information.

3、执行yum -y install MariaDB-client MariaDB-server MariaDB-devel

4、如果发现用YUM装时,代理服务器的网速下载太慢了导致超时然后报错退出,解决方案如下:

A自己用个人电脑到官网下载列表中的RPM文件,

B把自己下载好的五个RPM文件,全部上传到PCSERVER的

/var/cache/yum/x86_64/6/mariadb/packages/目录下,

C再次运行步骤3的语句。

三、在主机上启动多个MYSQL实例

1、MYSQL多实例,需要单独的数据目录和绑定相应的唯一端口。

端口号的约定:因为默认绑定的端口为3306,所以多实例的情况下约定从3306开始,如启动两个实例则为3306,3307。

数据目录的约定:统一集群上所有PCSEVER的MYSQL实例的数据目录为

/data1/mysql/data/$port,

比如两个实例的情况下,则为:

/data1/mysql/data/3306,/data1/mysql/data/3307

注:这个数据目录需要自己手工创建

2、初始化新的MYSQL数据库实例

在创建好数据目录的前提下,运行如下命令:(举例:创建两个新的数据库实例)

/usr/bin/mysql_install_db --basedir=/usr--datadir=/data1/mysql/data/3306 --user=mysql

/usr/bin/mysql_install_db --basedir=/usr--datadir=/data1/mysql/data/3307 --user=mysql

3、将数据目录及底下的所有子文件和子目录的所有权赋给mysql用户

运行如下命令:chown -R mysql:mysql /data1/mysql

(以上三步可以用一个角本来跑,ROOT用户跑脚本

cd /data1

mkdir mysql

cd mysql

mkdir data

cd data

mkdir 3306 3307

/usr/bin/mysql_install_db --basedir=/usr --datadir=/data1/mysql/data/3306 --user=mysql

/usr/bin/mysql_install_db --basedir=/usr --datadir=/data1/mysql/data/3307 --user=mysql chown -R mysql:mysql /data1/mysql

)

4、在MYSQL的HOME目录下添加多实例的启动配置文件:vi my_https://www.360docs.net/doc/2f8267941.html,f,然后粘贴上如下内容:

[mysqld_multi]

mysqld = /usr/bin/mysqld_safe

mysqladmin = /usr/bin/mysqladmin

user=root

[mysqld1]

server_id=你定的SERVERID,必须集群唯一,现在我用IP最后两位再加1位,如841 socket = /data1/mysql/data/3306/mysql.sock

port = 3306

datadir = /data1/mysql/data/3306

plugin-dir=/usr/lib64/mysql/plugin

log-bin=mysql-bin

general-log=1

character-set-server = utf8

collation_server=utf8_general_ci

[mysqld2]

server_id=你定的SERVERID,必须集群唯一,现在我用IP最后两位再加1位

socket = /data1/mysql/data/3307/mysql.sock

port = 3307

datadir =/data1/mysql/data/3307

plugin-dir=/usr/lib64/mysql/plugin

log-bin=mysql-bin

general-log=1

[mysqldump]

quick

max_allowed_packet = 16M

character-set-server = utf8

collation_server=utf8_general_ci

5用命令启动多实例(指定启动配置文件):

/usr/bin/mysqld_multi --defaults-file=/home/mysql/my_https://www.360docs.net/doc/2f8267941.html,f start 1,2

1,2为mysqld后面的数字

6为两个MYSQL数据库实例的root用户更改密码,统一改为mysql(默认密码为空)mysqladmin -u root -h 127.0.0.1 -P 3306 password

mysqladmin -u root -h 127.0.0.1 -P 3307 password

(第一次执行没问题,但是第二次执行的时候可能会报错,还是建议启动服务后到数据库里面去修改初始密码,还有去掉一些不安全的用户)

7改完密码后,再次修改多实例的记动配置文件my_https://www.360docs.net/doc/2f8267941.html,f,将新改的密码配置进去,否则改密码后无法正常地用上述/usr/bin/mysqld_multi命令来启停MYSQL服务。

[mysqld_multi]

mysqld = /usr/bin/mysqld_safe

mysqladmin = /usr/bin/mysqladmin

user=root

password=mysql(加入这一行)

还有一个问题就是登陆的时候,如果仅仅是用-P 3306 或者–P 3307可能不可以,所以最好还是用

mysql ‐uroot ‐ppassword ‐S /data/dbdata_3308/mysql.sock

指定sock文件

在建立新的数据库前记得先把旧的服务停掉,还有把旧的数据文件目录删除掉。

四、配置MYSQL之间的双主、主从复制

双主的结构如下:

两个MYSQL实例之间是互为主从(MASTER-SLAVE)的关系,双向复制。整个配置的过程中,最复杂的一步是事先要同步两个MYSQL实例之间的数据,使之一致,但由于测试集群一开始是一个空的数据库,所以这一步可以省略了。只需如下步骤,

1、创建复制数据专用的用户并且同时授权

A 在MASTER1机84上运行,创建一个允许Master-2来访问的用户master2,密码为:123456

GRANT REPLICATION SLAVE ON *.*

TO 'master2'@'132.121.88.85' IDENTIFIED BY '123456';

B 在MASTER285机上运行

创建一个允许Master-2来访问的用户master1,密码为:123456

GRANT REPLICATION SLAVE ON *.*TO 'master1'@'132.121.88.84' IDENTIFIED BY '123456';

2、修改MySQL主配置文件

Master-1上:

[mysqld]

auto-increment-increment = 2

auto-increment-offset = 1

Master-2上:

[mysqld]

auto-increment-increment = 2

auto-increment-offset = 2

修改完配置文件后记得要重启MYSQL实例

3、互相通告二进制日志位置,具体位置参数有两个,就是下文中标红的两处地方。请分别用show master status\G;去获得两者的值。

在Master-1上:

CHANGE MASTER TOMASTER_HOST='132.121.88.85', MASTER_PORT=3307,MASTER_USER='master1',MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=456;

在Master-2上:

CHANGE MASTER TOMASTER_HOST='132.121.88.84', MASTER_USER='master2', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000007', MASTER_LOG_POS=456;

4、启动复制(Replication)功能

在两台主机上分别执行

ERROR 1200 (HY000): Misconfigured slave: MASTER_HOST was not set; Fix in config file or with CHANGE MASTER TO

mysql>change master to master_host='localhost', MASTER_PORT=3306, master_user='repl', master_password='repl', master_log_file='mysql-bin.000001', master_log_pos=0;

mysql>

>START SLAVE;

配置到此完成!

5 用show slave status 查看主从复制的状态,如果发现:error connecting to master 'master1@132.121.88.85:3307' - retry-time: 60 retries: 86400 message: Can't connect to MySQL server on '132.121.88.85' (113 "No route to host")

基本上是因为要连接的主机开启了防火墙,登录到目录主机上用iptables –F命令关掉防火墙就可以了。

现在centos7都用firewall作为默认的防火墙,那么关闭的命令是:

Systemctl stop firewalld.service

如果要开放某个端口可以:

firewall-cmd --zome=public --add-port=5060-5059/udp –permanent

firewall-cmd --reload

安装MYCAT

下载

从Svn 上下载MYCAT的稳定版本。https://www.360docs.net/doc/2f8267941.html,/svn/openclouddb/

目前使用的linux版本是downloads\MyCat-Sever-1.2.1\Mycat-server-1.2.1-linux.tar.gz 创建用户和解压

useradd Mycat

passwd Mycat

chown -R Mycat.Mycat /home/Mycat

上次下载的安装文件,解压

tar -zvxf Mycat-server-1.2.1-linux.tar.gz

启动和停止

注意,要用Mycat用户登录

/home/Mycat/Mycat/bin

mycat start/restart

mycat stop

配置文件

Server.xml

用户账号和授权信息

Schema.xml

用户名密码信息

编辑MYCAT_HOME/conf/schema.xml文件,修改dataHost对应的连接信息:

注意writeHost/readHost中的location,user,password的值符合你所采用的Mysql的连接信息。

rule.xml

所有的分片规则都在rule.xml中定义,不同的表根据需求,定义不同的分片规则。

连接示例

mysql -h127.0.0.1 -Dtest -P8066 -umysql –pmysql mysql -utest -ptest -h127.0.0.1 -P8066 –DTESTDB

haproxy

去VIP

sudo vi /etc/sysctl.conf

#for haproxy

net.ipv4.ip_nonlocal_bind=1

创建用户

useradd haproxy

passwd haproxy

chown -R haproxy.haproxy /home/haproxy 解压安装

tar zcvf haproxy-1.3.20.tar.gz

cd haproxy-1.3.20

make TARGET=linux26 PREFIX=/usr/local/haprpxy ARCH=x86_64

make install PREFIX=/usr/local/haproxy

配置

安装完毕后,进入安装目录创建配置文件

# cd /usr/local/haproxy

#chown –R haproxy.haproxy /usr/local/haproxy

#sudo vi haproxy.cfg

global

log 127.0.0.1 local0 ##记日志的功能

maxconn 4096

chroot /usr/local/haproxy

user haproxy

group haproxy

daemon

defaults

log global

option dontlognull

retries 3

option redispatch

maxconn 2000

contimeout 5000

clitimeout 50000

srvtimeout 50000

listen admin_stats 10.0.30.139:48800 ##由于没有启用VIP,暂时用其中一台的IP和新端口stats uri /admin-status ##统计页面

stats auth admin:admin

mode http

option httplog

listen allmycat 10.0.30.139:8098

mode tcp

option tcplog

option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www #健康检查

balance roundrobin

server mycat_134 10.0.30.134:8066 check port 48700 inter 5s rise 2 fall 3

server mycat_139 10.0.30.139:8066 check port 48700 inter 5s rise 2 fall 3

srvtimeout 20000

默认haproxy是不记录日志的,为了记录日志还需要配置syslog模块,在oracle linux下是rsyslogd服务,yum –y install rsyslog 先安装rsyslog,然后

#vi /etc/rsyslog.d/haproxy.conf

加入以下内容

$ModLoad imudp

$UDPServerRun 514

local0.* /var/log/haproxy.log ##对应haproxy.cfg 的日志记录选项

延伸:

#vi /etc/rsyslog.conf

1、在#### RULES ####上面一行的地方加入以下内容:

# Include all config files in /etc/rsyslog.d/

$IncludeConfig /etc/rsyslog.d/*.conf

#### RULES ####

2、在local7.* /var/log/boot.log的下面加入以下内容(增加后的效果如下):

# Save boot messages also to boot.log

local7.* /var/log/boot.log

local0.* /var/log/haproxy.log

保存,重启

service rsyslog restart

现在你就可以看到日志(/var/log/haproxy.log)了

配置监听mycat是否存活

在Mycat server1 Mycat server2上都需要添加检测端口48700的脚本,为此需要用到xinetd,xinetd为linux 系统的基础服务,

首先在xinetd目录下面增加脚本与端口的映射配置文件

1、如果xinetd没有安装,使用如下命令安装:

yum install xinetd -y

2、检查/etc/xinetd.conf的末尾是否有这一句:includedir /etc/xinetd.d

没有就加上,

3、检查/etc/xinetd.d文件夹是否存在,不存在也加上

#cd /etc

#mkdir xinetd.d

4、增加 /etc/xinetd.d/mycat_status

监听mycat是否存活的配置

#cd /etc

#mkdir xinetd.d

#cd /etc/xinetd.d/

#touch mycat_status

#vim /etc/xinetd.d/mycat_status

service mycat_status

{

flags = REUSE

socket_type = stream

port = 48700

wait = no

user = root

server =/usr/local/bin/mycat_status

log_on_failure += USERID

disable = no

}

5、/usr/local/bin/mycat_status脚本

mycat_status脚本

#!/bin/bash

#/usr/local/bin/mycat_status.sh

# This script checks if a mycat server is healthy running on localhost. It will

# return:

#

# "HTTP/1.x 200 OK\r" (if mycat is running smoothly)

#

# "HTTP/1.x 503 Internal Server Error\r" (else)

mycat=`/usr/local/mycat/bin/mycatstatus | grep'not running' | wc -l`

if [ "$mycat" = "0" ];

then

/bin/echo-e "HTTP/1.1 200 OK\r\n"

else

/bin/echo-e "HTTP/1.1 503 Service Unavailable\r\n"

fi

4、/etc/services中加入mycat_status服务

加入mycat_status服务

#cd /etc

#vi services

在末尾加入

mycat_status 48700/tcp # mycat_status

保存

重启xinetd服务

service xinetd restart

5、验证mycat_status服务是否启动成功

验证mycat_status服务是否启动成功

#netstat -antup|grep 48700

如果成功会现实如下内容:

[root@localhost log]# netstat -antup|grep 48700

tcp 0 0 :::48700 :::* LISTEN 12609/xinetd

启动haproxy

启动haproxy前必须先启动keepalived,否则启动不了。

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

启动haproxy异常情况

如果报以下错误:

[root@localhost bin]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg [ALERT] 183/115915 (12890) : Starting proxy admin_status: cannot bind socket [ALERT] 183/115915 (12890) : Starting proxy allmycat_service: cannot bind socket [ALERT] 183/115915 (12890) : Starting proxy allmycat_admin: cannot bind socket

原因为:该机器没有抢占到vip

为了使用方便可以增加一个启动,停止haproxy的脚本

启动脚本starthap内容如下

#!/bin/sh

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg &

停止脚本stophap内容如下

#!/bin/sh

ps -ef | grep sbin/haproxy | grep -v grep |awk '{print $2}'|xargs kill -s 9

分别赋予启动权限

chmod +x starthap

chmod +x stophap

openssl安装

openssl必须安装,否则安装keepalived时无法编译,keepalived依赖openssl。openssl安装

tar zxvf openssl-1.0.1g.tar.gz

./config--prefix=/usr/local/openssl

./config-t

make depend

make

make test

make install

ln -s /usr/local/openssl /usr/local/ssl

openssl配置

vi /etc/ld.so.conf

#在/etc/ld.so.conf文件的最后面,添加如下内容:

/usr/local/openssl/lib

vi /etc/profile

export OPENSSL=/usr/local/openssl/bin

export PATH=$PATH:$OPENSSL

source /etc/profile

yum installopenssl-devel -y #如无法yum下载安装,请修改yum配置文件

测试:

ldd /usr/local/openssl/bin/openssl

linux-vdso.so.1 => (0x00007fff996b9000)

libdl.so.2 =>/lib64/libdl.so.2 (0x00000030efc00000)

libc.so.6 =>/lib64/libc.so.6 (0x00000030f0000000)

/lib64/ld-linux-x86-64.so.2 (0x00000030ef800000)

which openssl

/usr/bin/openssl

openssl version

OpenSSL 1.0.0-fips 29 Mar 2010

keepalived安装

本文在172.17.30.64、172.17.30.83两台机器进行keepalived安装

安装

tar zxvf keepalived-1.2.13.tar.gz

cd keepalived-1.2.13

./configure--prefix=/usr/local/keepalived

make

make install

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived/etc/init.d/

mkdir /etc/keepalived

cd /etc/keepalived/

cp /usr/local/keepalived/etc/keepalived/keepalived.conf/etc/keepalived mkdir-p /usr/local/keepalived/var/log

keepalived配置

建检查haproxy是否存活的脚本

#新建redis检查

mkdir /etc/keepalived/scripts

cd /etc/keepalived/scripts

keepalived.conf:

vi /etc/keepalived/keepalived.conf

Master:

Master

! Configuration Filefor keepalived

vrrp_script chk_http_port {

script"/etc/keepalived/scripts/check_haproxy.sh"

interval 2

weight 2

}

vrrp_instance VI_1 {

state MASTER #172.17.210.83上改为Master

interface eth0 #对外提供服务的网络接口

virtual_router_id 51 #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组

priority 150 #数值愈大,优先级越高,172.17.210.84上改为120

advert_int 1 #同步通知间隔

authentication { #包含验证类型和验证密码。类型主要有PASS、AH两种,通常使用的类型为PASS,据说AH使用时有问题

auth_type PASS

auth_pass 1111

}

track_script {

chk_http_port #调用脚本check_haproxy.sh检查haproxy是否存活

}

virtual_ipaddress { #vip地址,这个ip必须与我们在lvs客户端设定的vip相一致

172.17.210.103 dev eth0 scope globa

}

notify_master/etc/keepalived/scripts/haproxy_master.sh

notify_backup/etc/keepalived/scripts/haproxy_backup.sh

notify_fault /etc/keepalived/scripts/haproxy_fault.sh

notify_stop /etc/keepalived/scripts/haproxy_stop.sh

}

slave:

slave

! Configuration Filefor keepalived

vrrp_script chk_http_port {

script"/etc/keepalived/scripts/check_haproxy.sh"

interval 2

weight 2

}

vrrp_instance VI_1 {

state MASTER #172.17.210.64上改为Backup

interface eth1 #对外提供服务的网络接口

virtual_router_id 51 #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组

priority 120 #数值愈大,优先级越高,172.17.210.64上改为120

advert_int 1 #同步通知间隔

authentication { #包含验证类型和验证密码。类型主要有PASS、AH两种,通常使用的类型为PASS,据说AH使用时有问题

auth_type PASS

auth_pass 1111

}

track_script {

chk_http_port #调用脚本check_haproxy.sh检查haproxy是否存活

}

virtual_ipaddress { #vip地址,这个ip必须与我们在lvs客户端设定的vip相一致

172.17.210.103 dev eth1 scope globa

}

notify_master/etc/keepalived/scripts/haproxy_master.sh

notify_backup/etc/keepalived/scripts/haproxy_backup.sh

notify_fault /etc/keepalived/scripts/haproxy_fault.sh

notify_stop /etc/keepalived/scripts/haproxy_stop.sh

}

check_haproxy.sh

vi /etc/keepalived/scripts/check_haproxy.sh

脚本含义:如果没有haproxy进程存在,就启动haproxy,停止keepalived

check_haproxy.sh

#!/bin/bash

STARTHAPROXY="/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg"

STOPKEEPALIVED="/etc/init.d/keepalived stop"

LOGFILE="/usr/local/keepalived/var/log/keepalived-haproxy-state.log"

echo "[check_haproxy status]" >> $LOGFILE

A=`ps-C haproxy --no-header |wc-l`

echo "[check_haproxy status]" >> $LOGFILE

date >> $LOGFILE

if [ $A -eq 0 ];then

echo $STARTHAPROXY >> $LOGFILE

$STARTHAPROXY >> $LOGFILE 2>&1

sleep5

fi

if [ `ps -C haproxy --no-header |wc-l` -eq 0 ];then

exit 0

else

exit 1

fi

haproxy_master.sh(master和slave一样)

haproxy_master.sh

#!/bin/bash

STARTHAPROXY=`/usr/local/haproxy/sbin/haproxy-f /usr/local/haproxy/haproxy.cfg` STOPHAPROXY=`ps-ef | grep sbin/haproxy | grep -vgrep |awk'{print $2}'|xargskill -s 9` LOGFILE="/usr/local/keepalived/var/log/keepalived-haproxy-state.log"

echo "[master]" >> $LOGFILE

date >> $LOGFILE

echo "Being master...." >> $LOGFILE 2>&1

echo "stop haproxy...." >> $LOGFILE 2>&1

$STOPHAPROXY >> $LOGFILE 2>&1

echo "start haproxy...." >> $LOGFILE 2>&1

$STARTHAPROXY >> $LOGFILE 2>&1

echo "haproxy stared ..." >> $LOGFILE

haproxy_backup.sh(master和slave一样)

haproxy_backup.sh

#!/bin/bash

STARTHAPROXY=`/usr/local/haproxy/sbin/haproxy-f /usr/local/haproxy/haproxy.cfg` STOPHAPROXY=`ps-ef | grep sbin/haproxy | grep -vgrep |awk'{print $2}'|xargskill -s 9` LOGFILE="/usr/local/keepalived/var/log/keepalived-haproxy-state.log"

echo "[backup]" >> $LOGFILE

date >> $LOGFILE

echo "Being backup...." >> $LOGFILE 2>&1

echo "stop haproxy...." >> $LOGFILE 2>&1

$STOPHAPROXY >> $LOGFILE 2>&1

echo "start haproxy...." >> $LOGFILE 2>&1

$STARTHAPROXY >> $LOGFILE 2>&1

echo "haproxy stared ..." >> $LOGFILE

haproxy_fault.sh(master和slave一样)

haproxy_fault.sh

#!/bin/bash

LOGFILE=/usr/local/keepalived/var/log/keepalived-haproxy-state.log

echo "[fault]" >> $LOGFILE

date >> $LOGFILE

haproxy_stop.sh(master和slave一样)

haproxy_stop.sh

#!/bin/bash

LOGFILE=/usr/local/keepalived/var/log/keepalived-haproxy-state.log

echo "[stop]" >> $LOGFILE

date >> $LOGFILE

启用服务

启用服务

#启用服务

service keepalived start

怎样解决mysql 集群问题集

怎样解决mysql 集群问题集 MySQL是一个开放源码的小型关联式数据库管理系统,目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,专职优化、域名注册、网站空间、虚拟主机、mysql数据库、服务器托管、vps主机、服务器租用的中国信息港来为你做详细介绍! 错误1、[MgmtSrvr] WARNING -- 1011 Unable to connect with connect string: nodeid=0,localhost:1186 处理:一般这个情况是系统ping 127.0.0.1不通,可能是网卡问题,但是ping 在eth0和eth1上配置的IP地址却通,所以处理方法是在/etc/hosts文件中添加: 192.168.1.5 localhost 即可。192.168.1.5根据自己配置的IP地址进行修改。 错误2、在修改了数据节点目录后,数据节点遇到如下错误:[ndbd] ERROR -- Couldn't start as daemon, error: 'Failed to lock pidfile '/opt/mysql_cluster/ndb_data/ndb_11.pid', errno: 37' 处理:由于数据节点的目录是挂载在nas存储上面,由于防火墙问题导致nas 挂载异常,以致出现以上错误,关闭防火墙,重新挂载nas存储即可。 错误3、在修改了数据节点目录后,mysql节点遇到如下警告:[Warning] NDB : Tables not available after 15 seconds. Consider increasing --ndb-wait-setup value,导致管理节点识别不到mysql节点 处理:经检查,是配置文件https://www.360docs.net/doc/2f8267941.html,f里ndb-connectstring参数的配置有误,改成正确的管理节点IP地址即可。 Warning: World-writable config file '/etc/https://www.360docs.net/doc/2f8267941.html,f' is ignored Unable to connect with connect string: nodeid=0,localhost:1186 Retrying every 5 seconds. Attempts left: 12 11 10 9 8 7 6 5 4 3 2 1, failed. 2011-06-08 23:31:35 [ndbd] ERROR -- Could not connect to management server, error: '' 中国信息港,专业提供域名虚拟主机空间申请等服务,ICANN授权域名注册商,全国十强虚拟主机提供商,电信、联通、双线、海外等多种线路上百种虚拟主机空间任选,云主机,虚拟主机,vps主机,香港虚拟主机,虚拟主机申请,空间申请,服务器托管,服务器租用,云享主机,ShopEx空间,phpwind空间,discuz空间,php空间。

MySQL优化自学手册

/* * ------------------------------------------------------------------- * |-标题:MySQL优化自学手册 * |-整理: 杨白玉 * |-时间: 2015年9月25日 * ------------------------------------------------------------------- */ mysql优化 前提:数据库性能的优劣直接影响到程序的性能,所以数据库的设计与参数配置至关重要。 数据库优化的方式: 1、数据库设计 2、sql语句的优化 3、数据库参数的配置(扩展数据库的缓存或者数据库的空间) 4、恰当的硬件资源(钱的问题,有钱就能满足)

第一章数据库的设计 一、数据库的设计: 数据库的设计指的就是表的设计。设计要符合三范式(规范的模式),有时我们也需要适当的逆范式; 二、什么是三范式? 第一范式:1NF是对属性(可理解为字段)的原子性约束,要求属性具有原子性,不可再分。第二范式:2NF是对记录的唯一性约束,要求记录有唯一的标识,即实体的唯一性; 第三范式:3NF是对字段冗余的约束,即任何字段不能由其他字段派生出来,要求字段没有冗余,这是可以做到的。 然而,没有冗余的数据库未必是好的数据库,有时候为了提高运行的效率,我们也会使用适当的逆范式,方法就是:增加字段。 一般来说,1NF在关系型数据库中是自动满足的; 2NF通常通过主键自增的唯一性来约束。而且,记录本身也很少会完全一样; 3NF主要是在主从表中,不会出现相同的字段与字段值;

第二章 SQL语句的优化 一、SQL语句优化的步骤: 1、通过show status 命令了解各种sql的执行频率; 2、定位执行效率较低的SQL语句,主要集中在查询语句 3、通过explain分析低效率的sql语句的执行情况 4、确定问题并采取相应的优化措施 二、sql语句有几类? ddl(数据定义语句)[create alter drop] dml(数据操作语句)[insert delete update] select dtl(数据事物语句)[commit rollback savepoint] dcl(数据控制语句)[grant revoke] show status命令 该命令可以显示mysql数据库当前的状态,我们主要重点关注“Com”开头的指令。 1、显示数据库开启本次会话后到目前的信息: show status like “Com%”; <=> show session status like “Com%”; 2、显示数据库从启动到目前的信息: Show global status like “Com%”;

MySQL Cluster单机搭建集群环境

运行环境: centos6.1 Mysql版本: MySQL-cluster-gpl-7.2.6-linux2.6-x86_6 下载地 址:https://www.360docs.net/doc/2f8267941.html,/Downloads/MySQL-Cluster-7.2/mysql-cluster-gpl-7.2.6-linux2. 6-x86_64.tar.gz 对于这第一个MySQL数据库的集群,它由1个单一的MySQL服务引擎(mysqlds)、两个数据节点(ndbd)和一个单一的管理节点(ndb_mgmd)共同组成,所有的节点都运行在同一台主机上。 为配置文件和数据文件创建必要的存储文件夹,分别要建立如下几个文件夹: ① /home/mysql/my_cluster ② /home/mysql/my_cluster/ndb_data ③ /home/mysql/my_cluster/mysqld_data ④ /home/mysql/my_cluster/mysqld_data/mysql ⑤ /home/mysql/my_cluster/mysqld_data/ndbinfo ⑥ /home/mysql/my_cluster/conf 具体安装步骤: 1. 添用加户与组mysql [plain]view plaincopy 1.shell> groupadd mysql 2.shell> useradd -r -d /home/mysql -g mysql mysql [plain]view plain copy 1.shell> groupadd mysql 2.shell> useradd -r -d /home/mysql -g mysql mysql 2. 切换到mysql用户权限下 [plain]view plaincopy 1.shell> su - mysql [plain]view plain copy 1.shell> su - mysql

MYSQL安装和维护手册

Mysql安装和维护手册

目录 1.在Linux下安装Mysql (3) 1.1RPM安装MySQL (3) 1.2源码安装mysql (4) 1.3Mysql管理 (6) 3.Mysql的配置管理 (8) 4.Mysql复制管理 (12) 4.1现有分布式数据库架构 (12) 4.2主从异步同步配置操作实例 (12) 4.3半同步复制 (14) 5.Mysql多实例配置 (15)

1.在Linux下安装Mysql 1.1RPM安装MySQL 建议在Linux中使用RPM包来安装MySQL。MySQL RPM目前已经嵌入到SuSE Linux 7.3系统中,但是应当能在大多数支持rpm和使用glibc的Linux版本中工作。 MySQL AB不提供与具体平台相关的RPM;具体平台相关的RPM和通用RPM之间的区别是具体平台相关RPM为目标平台而构建,为动态连接。而通用RPM与Linux线程之间是静态连接。 注释:通常由其它供应商提供MySQL的RPM分发版。其特征和功能与MySQL AB所构建的不同,该手册中的指令不一定适合安装其它供应商提供的MySQL的RPM分发版。此时应咨询供应商的说明。 在大多数情况,你只需要安装MySQL-server和MySQL-client软件包来安装MySQL。在标准安装中不需要其它的包。 如果安装MySQL软件包时出现从属错误(例如,“error:removing these packages would break dependencies:libmysqlclient.so.10is needed by..”),你还应当安装包MySQL-shared-compat,其中包括两个向后兼容的共享库(MySQL4.0为libmysqlclient.so.12,MySQL3.23为libmysqlclient.so.10)。 可以使用以下RPM包: ·MySQL-server-VERSION.glibc23.i386.rpm MySQL服务器。你需要该选项,除非你只想连接运行在另一台机器上的MySQL服务器。注释:在MySQL4.0.10之前,服务器RPM文件被称为MySQL-VERSION.i386.rpm。也就是说,名称中不含有-server。 ·MySQL-client-VERSION.glibc23.i386.rpm 标准MySQL客户端程序。你可能总是要安装该软件包。 ·MySQL-devel-VERSION.glibc23.i386.rpm 库和包含文件,如果你想要编译其它MySQL客户端,例如Perl模块,则需要。 ·MySQL-shared-VERSION.glibc23.i386.rpm 该软件包包含某些语言和应用程序需要动态装载的共享库(libmysqlclient.so*),使用MySQL。 ·MySQL-shared-compat-VERSION.glibc23.i386.rpm 该软件包包括MySQL3.23和MySQL4.0的共享库。如果你安装了应用程序动态连接MySQL3.23,但是你想要升级到MySQL4.0而不想打破库的从属关系,则安装该软件包而不要安装MySQL-shared。从MySQL4.0.13起包含该安装软件包。 ·MySQL-embedded-VERSION.glibc23.i386.rpm 嵌入式MySQL服务器库(从MySQL4.0起)。 ·MySQL-VERSION.glibc23.i386.rpm 包含以前所有软件包的源码。可用来在其它架构上重建RPM(例如,Alpha或SPARC)。要想看到RPM软件包内的所有文件(例如,MySQL-server RPM),运行: shell>rpm-qpl MySQL-server-VERSION.i386.rpm 要想执行标准最小安装,运行: shell>rpm-i MySQL-server-VERSION.i386.rpm shell>rpm-i MySQL-client-VERSION.i386.rpm 要想只安装客户端软件包,运行:

mysql集群部署文档

3台机器搭建集群环境 1. 集群配置如下 (3台机器) 管理节点:192.168.6.134 数据节点1:192.168.6.135 数据节点2:192.168.6.136 sql节点1:192.168.6.135 sql节点2:192.168.6.136 我使用3台机器进行配置,其中两台机器上的数据节点与sql节点在一起 2. 管理节点安装(192.168.6.134) 安装 1.shell> groupadd mysql 2.shell> useradd mysql -g mysql 3.shell> mv mysql-cluster-gpl-7.2.6-linux2.6-x86_6 4.tar.gz /usr/local/ 4.shell> cd /usr/local/ 5.shell> tar zxvf mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz /usr/local/ 6.shell> mv mysql-cluster-gpl- 7.2.6-linux2.6-x86_64 mysql 7.shell> chown -R mysql:mysql mysql 8.shell> cd mysql 9.shell> scripts/mysql_install_db --user=mysql 配置管理节点 1.shell> mkdir /var/lib/mysql-cluster 2.shell> cd /var/lib/mysql-cluster vi config.ini 添加以下内容 1.[ndbd default] 2.NoOfReplicas=2 3.DataMemory=80M 4.IndexMemory=18M 5.[ndb_mgmd]

mysql集群架构说明与配置实例-详细过程

Mysql集群架构文档 MySQL Cluster 是MySQL适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster 存储引擎,允许在1个Cluster 中运行多个MySQL服务器。在MyQL 5.0及以上的二进制版本中、以及与最新的Linux版本兼容的RPM中提供了该存储引擎。(注意,要想获得MySQL Cluster 的功能,必须安装mysql-server 和mysql-max RPM)。 目前能够运行MySQL Cluster 的操作系统有Linux、Mac OS X和Solaris(一些用户通报成功地在FreeBSD上运行了MySQL Cluster ,但MySQL AB公司尚未正式支持该特性)。 一、MySQL Cluster概述 MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的Cluster 。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。 MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster 的数据节点,管理服务器,以及(可能)专门的数据访问程序。关于Cluster 中这些组件的关系,请参见下图:

所有的这些节点构成一个完成的MySQL集群体系。数据保存在“NDB存储服务器”的存储引擎中,表(结构)则保存在“MySQL服务器”中。应用程序通过“MySQL服务器”访问这些数据表,集群管理服务器通过管理工具(ndb_mgmd)来管理“N DB存储服务器”。 通过将MySQL Cluster 引入开放源码世界,MySQL为所有需要它的人员提供了具有高可用性、高性能和可缩放性的Cluster 数据管理。 二.安装环境 1.Linux操作系统版本:CentonOS 4.7 2.Mysql数据库版本:mysql-max-5.0.24-linux-i686.tar.gz 共三台机器安装了CentonOS4.7版本,首先保证把系统中没有一个包带有mysql的,有的话

组建MySQL集群的几种方案,优劣与讨论

组建MySQL集群的几种方案 LVS+Keepalived+MySQL(有脑裂问题?但似乎很多人推荐这个) DRBD+Heartbeat+MySQL(有一台机器空余?Heartbeat切换时间较长?有脑裂问题?) MySQL Proxy(不够成熟与稳定?使用了Lua?是不是用了他做分表则可以不用更改客户端逻辑?) MySQL Cluster (社区版不支持INNODB引擎?商用案例不足?稳定性欠佳?或者还有其他问题?又或者听说现在发展不错?) MySQL + MHA (如果配上异步复制,似乎是不错的选择,又和问题?) MySQL + MMM (似乎反映有很多问题,未实践过,谁能给个说法) 淘宝的Cola(似乎现在停止开发了?)?变形虫Amoeba(事务支持?) 或者,其他方案? 回答1: 不管哪种方案都是有其场景限制或说规模限制,以及优缺点的。 1. 首先反对大家做读写分离,关于这方面的原因解释太多次数(增加技术复杂度、可能导致读到落后的数据等),只说一点:99.8%的业务场景没有必要做读写分离,只要做好数据库设计优化和配置合适正确的主机即可。 2.Keepalived+MySQL --确实有脑裂的问题,还无法做到准确判断mysqld是否HANG 的情况; 3.DRBD+Heartbeat+MySQL --同样有脑裂的问题,还无法做到准确判断mysqld是否HANG的情况,且DRDB是不需要的,增加反而会出问题; 3.MySQL Proxy -- 不错的项目,可惜官方半途夭折了,不建议用,无法高可用,是一个写分离; 4.MySQL Cluster -- 社区版本不支持NDB是错误的言论,商用案例确实不多,主要是跟其业务场景要求有关系、这几年发展有点乱不过现在已经上正规了、对网络要求高; 5.MySQL + MHA -- 可以解决脑裂的问题,需要的IP多,小集群是可以的,但是管理大的就麻烦,其次MySQL + MMM 的话且坑很多,有MHA就没必要采用MMM 建议: 1.若是双主复制的模式,不用做数据拆分,那么就可以选择MHA或Keepalive 或heartbeat

MySQL_Cluster集群配置方案

在为某证券公司设计其OA架构时,初期客户是30万用户在线;然而在项目实施中,客户又提出50万用户同时在线的需求,而且都有写的需求;这样初始的设计master-master-slave,读写分离满足不了客户的要求,所以我们打算采用Mysql Cluster方案;MySQL Cluster 是MySQL适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster 存储引擎,允许在1个Cluster中运行多个MySQL服务器。在MyQL 5.0及以上的二进制版本中、以及与最新的Linux版本兼容的RPM中提供了该存储引擎。 一、MySQL Cluster概述 MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的 Cluster 。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。 MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster 的数据节点,管理服务器,以及(可能)专门的数据访问程序。 所有的这些节点构成一个完成的MySQL集群体系。数据保存在“NDB存储服务器”的存储引擎中,表(结构)则保存在“MySQL服务器”中。应用程序通过“MySQL服务器”访问这些数据表,集群管理服务器通过管理工具(ndb_mgmd)来管理“NDB存储服务器”。 通过将MySQL Cluster 引入开放源码世界,MySQL为所有需要它的人员提供了具有高可用性、高性能和可缩放性的 Cluster 数据管理。 二、MySQL Cluster 基本概念 “NDB” 是一种“内存中”的存储引擎,它具有可用性高和数据一致性好的特点。 MySQL Cluster 能够使用多种故障切换和负载平衡选项配置NDB存储引擎,但在 Cluster 级别上的存储引擎上做这个最简单。MySQL Cluster的NDB存储引擎包含完整的数据集,仅取决于 Cluster本身内的其他数据。 目前,MySQL Cluster的 Cluster部分可独立于MySQL服务器进行配置。在MySQL Cluster中, Cluster的每个部分被视为1个节点。 管理(MGM)节点:这类节点的作用是管理MySQL Cluster内的其他节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。MGM节点是用命令 “ndb_mgmd”启动的。 数据节点:这类节点用于保存 Cluster的数据。数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就

mysql的ndb集群

##################################################################### ### mysql的ndb集群是一个热备与负载均衡的mysql的数据库集群,安全性可达到99.99%,是有mysql节点,数据库节点,管理节点组成。如下图 mysql节点A-----------mysql节点B | \ / | | 管理节点 | | / \ | 数据节点A------------数据节点B ##################################################################### ### ############设备软件需求:############## 5台服务器,RHEL5.2操作系统,mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz 192.168.0.13 管理节点 192.168.0.61 mysql节点A 192.168.0.62 mysql节点B 192.168.0.63 数据节点A 192.168.0.64 数据节点B 配置方案: ########1.节点软件安装:#############

将mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz分别在mysql节点A、B,数据节点A、B上安装。 # useraddmysql # tar zxvf mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz # mv mysql-cluster-gpl-7.1.4b-linux-i686-glibc23 /usr/loacl/mysql # chown -R mysql.mysql /usr/local/mysql ########2.配置mysql节点:(在192.168.0.61上)########### # vim /etc/https://www.360docs.net/doc/2f8267941.html,f [mysqld] # mysql服务进程参数 ndbcluster ndb-connectstring=192.168.0.13 [mysql_cluster] # 集群服务进程指向管理节点 ndb-connectstring=192.168.0.13 # scp /etc/https://www.360docs.net/doc/2f8267941.html,f 192.168.0.62:/etc/https://www.360docs.net/doc/2f8267941.html,f 两个sql节点的配置完全相同,可以copy. #########3.配置数据节点:(在192.168.0.63上)############# # vim /etc/https://www.360docs.net/doc/2f8267941.html,f [mysqld] Datadir=/usr/local/mysql/data #数据在本地的存储位置 ndbcluster ndb-connectstring=192.168.0.13

MYSQL集群搭建指引文档

在PCSERVER上安装MARIADB。 一、先检查主机的环境 如果主机已经安装了MYSQL的早期版本,并且有MYSQL实例正在主机上运行,要先行清理早期的版本,具体步骤如下: 1、优雅地停掉当前正在运行的MYSQL服务。 2、卸载MYSQL早期版本及其组件 rpm -qa|grep -i mysql #查看已经安装的mysql相关包 rpm -ev package_name #package_name包名比如:mysql-server-5.0.51b-1.el5 二、用YUM安装MARIADB 具体步骤如下: 1、cd /etc/yum.repos.d 2、vi MariaDB.repo然后粘上官网上的内容(用CENTOS操作系统举例) Here is your custom MariaDB YUM repository entry for CentOS. Copy and paste it into a file under /etc/yum.repos.d/ (we suggest naming the file MariaDB.repo or something similar). See "Installing MariaDB with yum" for detailed information. 3、执行yum -y install MariaDB-client MariaDB-server MariaDB-devel 4、如果发现用YUM装时,代理服务器的网速下载太慢了导致超时然后报错退出,解决方案如下: A自己用个人电脑到官网下载列表中的RPM文件,

MYSQL 详细图文使用手册

MYSQL 详细图文使用手册目录 一、前言 二、MYSQL安装 1.下载 2.安装 三、MYSQL 搭建 1.设置环境变量 2.设置开启外网权限 3.连接数据库 4.更改数据储存位置 四、MYSQL创建数据库 1.MySQL Workbench 8.0 CE界面介绍 2.创建数据库 3.创建数据表 4.插入数据 5.查询数据 6.删除数据 7.修改数据 五、使用python导入导出数据

一、前言 1.什么是MySQL? MySQL 是一种数据库。数据库定义了存储信息的结构。以表的方式存储信息,设置有

索引可以快速定位到需要的内容,避免查找数据时要遍历整个库,耗费资源速度也慢。 2.MYSQL对比EXCEL 相同点: 都是用来处理数据的工具,而且特别擅长处理一维二维表形式的数据。 不同点: a.Excel的多个sheet之间不能设计复杂的数据关系,而数据库的的表之间可以有复杂的 关系,这也是数据库的最大特点,关系型数据库的名字由此而来; b.Excel不能共享,如EXCEL在其他人需要使用时需要单独发送文件,并且修改不能同 步,数据库能可以轻松共享,数据随时共享且同步; c.能力方面,Excel可以实现的数据处理功能数据库都可以做到,同时又具备很多Excel 没有的功能,如SQL查询、数据聚合、数据索引等等; d.EXCEL是电子表格,其特点是所见即所得,可视性强,操作简单,不需编程就能制作 相对复杂的表格,数据库较为概念化,可视性不强,需要学习SQL语句; e.EXCEL 最大储存100万行数据(2017版本以上),过万级数据计算会出现卡顿,MYSQL 数据库单表能储存64PB(1PB=1024TB),每秒能处理百万级数据。 类似关系: MYSQL上的数据库(schema)相当于EXCEL的工作簿(workbook)文件;

Mysql双主架构安装手册

Mysql5.7.21+双主架构安装 XX年XX月XX日

修订历史记录 (A-添加,M-修改,D-删除)

目录 1概述 (4) 1.1简介 (4) 1.2术语和缩写词 (7) 2使用场景 (7) 3安装 (8) 3.1系统要求 (8) 3.2JDK环境以及其他依赖包 (8) 3.3前期准备(https://https://www.360docs.net/doc/2f8267941.html,/downloads/mysql/) (8) 3.4安装包名称 (9) 3.5部署步骤(以下使用InnoDB存储引擎) (9) 3.6验证方案 (18) 4常用操作 (18) 5原理以及实现方式 (18)

1概述 1.1简介 1.1.1什么是MySQL MySQL是一种关系型数据管理系统;关系模型及二维关系,二维关系主要是表,表是由行(row)、列(column)组成,为了能够加速表中 的数据查询,给表创建索引(index) 1.1.2MySQL的存储引擎是什么? MySQL中的数据以各种不同的方法存储在内存或者文件中。这些方法中的每一种技术都使用不同的存储机制、索引方式、锁机制并且最终 提供不同的功能和能力。通过选择不同的技术,能够获得额外的效率提 升,从而改善整体应用功能;这些不同的技术结合相关的功能在MySQL 中被称作为存储引擎,一般也被称为表类型; MySQL中有的表简单,有的表复杂,有的表不需要来存储任何长期数据,有的表读取时非常快,但是插入数据特别慢;而在实际使用过程 中,就可能需要各种各样的表,不同的表,就意味着存储不同类型的数 据,数据的处理也会存在差异。那么对于MySQL来说,他提供了多种 类型的存储引擎。 1.1.3MySQL主流存储引擎MySIAM、InnoDB区别 a:存储结构 MySIAM:数据在磁盘上存储成3个文件。文件的名字以表的名

Mysql-cluster安装配置

Mysql-cluster 7.2.5的安装配置 OS:Ubuntu Data1 10.0.0.102 数据节点,SQL节点 Data2 10.0.0.103 数据节点,SQL节点 Ndb 10.0.0.104 管理节点 1、下载解压到/usr/local/mysql tar -zxvf mysql-cluster-gpl-7.2.5-linux2.6-x86_64.tar.gz mv mysql-cluster-gpl-7.2.5-linux2.6-x86_64 /usr/local/mysql 2、创建mysql用户 useradd mysql chown -R mysql:mysql /usr/local/mysql/ 3、安装支持库 sudo apt-get install libaio1 4、修改/etc/profile以方便使用 PATH=$PATH:/usr/local/mysql/bin export PATH 5、安装mysql cd /usr/local/mysql/scripts ./mysql_install_db–basedir=/usr/local/mysql/–datadir=/usr/local/mysql/data/ --user=mysql 6、配置管理节点ndb 拷贝/usr/local/mysql/bin/ndb_mgm,ndb_mgmd两个文件到/usr/local/bin cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin mkdir /var/lib/mysql-cluster vim /var/lib/mysql-cluster/config.ini [ndbd default] NoOfReplicas=1 #每个数据节点的镜像数量 DataMemory=100M #每个数据节点中给数据分配的内存 IndexMemory=10M #每个数据节点中给索引分配的内存 [ndb_mgmd] #配置管理节点 NodeId=1 hostname=10.0.0.104 datadir=/var/lib/mysql-cluster/ #管理节点数据(日志)目录 [ndbd] #配置数据节点 NodeId=2 hostname=10.0.0.102 datadir=/usr/local/mysql/data #数据节点目录(数据存储位置)

mysql使用教程指南

有很多朋友虽然安装好了mysql但却不知如何使用它。在这篇文章中我们就从连接mysql、修改密码、增加用户等方面来学习一些mysql的常用命令。 一、连接mysql。 格式: mysql -h主机地址 -u用户名-p用户密码 1、例1:连接到本机上的mysql。 首先在打开DOS窗口,然后进入目录mysql in,再键入命令mysql -uroot -p,回 车后提示你输密码,如果刚安装好mysql,超级用户root是没有密码的,故直接回 车即可进入到mysql中了,mysql的提示符是:mysql> 2、例2:连接到远程主机上的mysql。假设远程主机的IP为:110.110.110.110,用户 名为root,密码为abcd123。则键入以下命令: mysql -h110.110.110.110 -uroot -pabcd123 (注:u与root可以不用加空格,其它也一样) 3、退出mysql命令:exit(回车) 二、修改密码。 格式:mysqladmin -u用户名 -p旧密码 password 新密码 1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令 mysqladmin -uroot password ab12 注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。 2、例2:再将root的密码改为djg345。 mysqladmin -uroot -pab12 password djg345 另一种方法: shell>mysql -u root -p mysql>SET PASSWORD FOR root=PASSWORD("root"); 三、增加新用户。(注意:和上面不同,下面的因为是mysql环境中的命令,所以后面都带 一个分号作为命令结束符) 格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码" 例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命 令: grant select,insert,update,delete on *.* to test1@"%" Identified by "abc"; 但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了, 解决办法见例2。 例2、增加一个用户test2密码为abc,让其只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即mysql数据 库所在的那台主机),这样用户即使用知道test2的密码,也无法从internet上直 接访问数据库,只能通过mysql主机上的web页来访问了。 grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc"; 如果你不想test2有密码,可以再打一个命令将密码消掉。 grant select,insert,update,delete on mydb.* to test2@localhost identified by ""; 有关数据库方面的操作。注意:你必须首先登录到mysql中,以下操作都是在mysql的提示符下进行的,而且每个命令以分号结束。 一、操作技巧 1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回 车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束 标志就OK。

Mariadb-galera集群配置

MariaDB作为Mysql的一个分支,在开源项目中已经广泛使用,例如大热的openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力,集群部署是必不可少的。 MariaDB Galera Cluster 介绍 MariaDB集群是MariaDB同步多主机集群。它仅支持XtraDB/ InnoDB存储引擎(虽然有对MyISAM实验支持 - 看wsrep_replicate_myisam系统变量)。 主要功能: ●同步复制 ●真正的multi-master,即所有节点可以同时读写数据库 ●自动的节点成员控制,失效节点自动被清除 ●新节点加入数据自动复制 ●真正的并行复制,行级 ●用户可以直接连接集群,使用感受上与MySQL完全一致 优势: ●因为是多主,所以不存在Slavelag(延迟) ●不存在丢失事务的情况 ●同时具有读和写的扩展能力 ●更小的客户端延迟 ●节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不 同的 技术: Galera集群的复制功能基于Galeralibrary实现,为了让MySQL与Galera library通讯,特别针对MySQL开发了wsrep API。 Galera插件保证集群同步数据,保持数据的一致性,靠的就是可认证的复制,工作原理如下图: 当客户端发出一个commit的指令,在事务被提交之前,所有对数据库的更改都会被write-set收集起来,并且将 write-set 纪录的内容发送给其他节点。 write-set 将在每个节点进行认证测试,测试结果决定着节点是否应用write-set更改数据。如果认证测试失败,节点将丢弃 write-set ;如果认证测试成功,则事务提交。

通过KeepAlived搭建MySQL双主模式的高可用集群系统

通过KeepAlived搭建MySQL双主模式的高可用集群系统 一、整体架构 企业级mysql集群具备高可用、可扩展、易管理、低成本的特点。下面将介绍企业环境中经常应用的一个解决方案,即MySQL的双主互备架构,主要设计思路是通过MySQL Replication技术将两台MySQL Server互相将对方作为自己的Master,自己又同时作为对方的Slave来进行复制。这样就实现了高可用构架中的数据同步功能,同时,将采用KeepAlived 来实现Mysql的自动failover。在这个构架中,虽然两台MySQL Server互为主从,但同一时刻只有一个MySQL Server可读写,另一个MySQL Server只能进行读操作,这样可保证数据的一致性。整个架构下图所示。 二、MySQL主主互备模式配置环境 第一步要做的工作是在这两天机器上都安装mysql,在做主从复制的时候mysql的版本尽量保持一致。即使不一样一定要以主服务的版本为最高的版本,从服务器的版本不能高于主服务器的版本。 1、Mysql的安装与配置 Mysql5.6版本之后,编译mysql方式变为cmake 安装cmake: #yum install cmake #cd mysql-5.6.17

#cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DSYSCONFDIR=/etc \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \ -DMYSQL_TCP_PORT=3306 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci make && make install 如果没有就创建用户就创建如下用户: #groupadd mysql #useradd -g mysql mysql 修改/usr/local/mysql权限: #chown -R mysql:mysql /usr/local/mysql #cd /usr/local/mysql 进入安装路径,执行初始化配置脚本,创建系统自带的数据库和表: #scripts/mysql_install_db--basedir=/usr/local/mysql--datadir=/usr/local/mysql/data --user=mysql 2、启动MySQL 添加服务,拷贝服务脚本到init.d目录,并设置开机启动 #cd /usr/local/mysql #cp support-files/mysql.server /etc/init.d/mysql #chkconfig mysql on #service mysql start--启动MySQL

MySQL双机热备+集群服务

MYSQL双机热备+LVS负载均衡集群实现 四台服务器均采用Asianux-3sp3 Linux操作系统!~ 1.MYSQL双机热备配置(主主模式) (1)配置mysql01服务器IP地址为172.16.1.101 (2)配置mysql02服务器IP地址为172.16.1.102 (3)在两台mysql服务器上安装MYSQL服务. (4)使用service mysqld start 启动mysql服务 (5)使用mysqladmin –u 账号password 密码来创建管理账号 (6)使用mysql –u 账号–p 回车输入密码登入MySQL

(7)在mysql>状态下使用grant all on *.* to 账号@对端mysql2服务器的ip地址identified by ‘密码’;创建双机热备所使用的mysql账号 (8)使用exit命令退出mysql (9)使用命令vi /etc/https://www.360docs.net/doc/2f8267941.html,f 编辑/etc/https://www.360docs.net/doc/2f8267941.html,f 在文件最上方添加如下信息: server-id=1 mysql的id 两台mysql服务器一个为1一个为2 log-bin=mysqlback 指定日志的名字 master-host=172.16.1.102 对端mysql的ip地址 master-user=hnspi 对端mysql设置的用于同步的账号,见(6) master-password 对端账号的密码 master-port=3306 指定数据库使用的端口号 保存退出 (10)使用命令service mysqld restart重启mysql服务 (11)使用mysql –u 管理账号–p 回车输入密码登入mysql (12)Mysql>状态下输入slave start ;启动slave(同步数据库)功能

mysql集群

1、下载完成MariaDB-Galera-server galera MariaDB-client安装包 配置yum源 vim /etc/yum.repos.d/mariadb.repo [mariadb] name = MariaDB enable=1 priority=3 baseurl = https://www.360docs.net/doc/2f8267941.html,/5.5.33a/centos6-amd64/ gpgkey=https://https://www.360docs.net/doc/2f8267941.html,/RPM-GPG-KEY-MariaDB gpgcheck=1 安装yum -y install MariaDB-Galera-server galera MariaDB-client 2、编辑每台机器的hosts文件,添加如下内容 [root@client137 ~]# vim /etc/hosts 2.192.168.1.137 https://www.360docs.net/doc/2f8267941.html, client137 3.192.168.1.138 https://www.360docs.net/doc/2f8267941.html, client138 4.192.168.1.139 https://www.360docs.net/doc/2f8267941.html, client139 # 启动测试一下 6.[root@client137 ~]# /etc/init.d/mysql start 7.Starting MySQL.... SUCCESS! 8.[root@client137 ~]# chkconfig mysql on 设置MariaDB的root密码,并做安全加固 01.[root@client137 ~]# /usr/bin/mysql_secure_installation 02.[root@client137 ~]# /usr/bin/mysql_secure_installation 03.# 登陆数据库,授权用于集群同步的用户和密码 04.[root@client137 ~]# mysql -uroot -pkongzhong 05.mysql> GRANT USAGE ON *.* to sst@'%' IDENTIFIED BY 'sstpass123'; 06.mysql> GRANT ALL PRIVILEGES on *.* to sst@'%'; 07.mysql> FLUSH PRIVILEGES; 08.mysql> quit 09.# 创建并配置https://www.360docs.net/doc/2f8267941.html,f文件 10.[root@client137 ~]# cp /usr/share/mysql/https://www.360docs.net/doc/2f8267941.html,f /etc/https://www.360docs.net/doc/2f8267941.html,f.d/ 11.[root@client137 ~]# vim /etc/https://www.360docs.net/doc/2f8267941.html,f.d/https://www.360docs.net/doc/2f8267941.html,f 12.# 只需要修改如下4行:

相关文档
最新文档