技术改变世界 阅读塑造人生! - shaogx.com

This string was altered by TechBlog\Plugins\Example.; This is an example to show the potential of an offcanvas layout pattern in Bootstrap. Try some responsive-range viewport sizes to see it in action.

MySQL创始人支招Oracle 建议转售MySQL

自今年4月20日Oracle宣布以72亿美元收购Sun以后,Sun公司自有的Java、MySQL和硬件产品的去留一直成为人们关注的焦点。上周闭幕的Oracle Open World大会曾传出Oracle不会放弃MySQL的消息。... 全文

MySQL创始人

备份mysql脚本

    前几天为了给公司的mysql数据库做了个从机,从机直接从主机复制数据过来进行同步。为了能对主数据库数据进行备份,我写了个脚本,想法参考了网上的想法:即每天0点与12点各做一次全备,每隔两个小时做一次增量备份。脚本调了好些回,其实原理很简单,最后对备份文件进行隔天压缩来节省空间。里面用的是Innobackupex进行备份。  #!/bin/bash# file: mysql_back.sh# Author: jacky lau 2012-5-21 tim=`date +%H%M | cut -c 1,2`data_path=/home/data/$(date -d "today" +"%m")/$(date -d "today" +"%d")can=`find $data_path/ -cmin -125 -type d | awk -F/ '{print $6}' | grep -v full | uniq | grep -v "^$"`inc=`find $data_path/ -cmin -125 -type d -name "*inc" | wc -l`  # Create directory if [ ! -d $data_path ]then        mkdir -p $data_pathelse        echo "目录已经存在,退出。"fi # Full backup if [ $tim -eq "00" ]then        echo -e " #################################################"        echo -e " #    00:00:00 full backup of all databases     #"        echo -e " #################################################"         echo "00:00:00 开始全备份..."`date`         /usr/bin/innobackupex --user=bakuser --password=1 --defaults-file=/etc/my.cnf --no-timestamp --socket=/usr/local/mysql/tmp/mysql.sock $data_path/full_1         echo "00:00:00 全备完毕..."`date` elif [ $tim -eq "12" ]then        echo -e " #################################################"        echo -e " #     12:00:00 full backup of all databases    #"        echo -e " #################################################"         echo "12:00:00 开始全备份..."`date`         /usr/bin/innobackupex --user=bakuser --password=1 --defaults-file=/etc/my.cnf --no-timestamp --socket=/usr/local/mysql/tmp/mysql.sock $data_path/full_2         echo "12:00:00 全备完毕..."`date` fi if [ $tim -ge "00" -a $tim -lt "12" -a $inc -lt "1" ]then                echo "0点开始首次增量备份..."`date`                echo "创建增量备份目录"         /usr/bin/innobackupex --defaults-file=/etc/my.cnf --user=bakuser --password=1 --no-timestamp --socket=/usr/local/mysql/tmp/mysql.sock --incremental --incremental-basedir=$data_path/full_1 $data_path/$(date -d "today" +"%H")-inc         echo "0点首次增量备份结束..."`date` elif [ $tim -ge "12" -a $tim -lt "23" -a $inc -lt "1" ]then                echo "12点开始首次增量备份..."`date`                echo "创建增量备份目录"         /usr/bin/innobackupex --defaults-file=/etc/my.cnf --user=bakuser --password=1 --no-timestamp --socket=/usr/local/mysql/tmp/mysql.sock --incremental --incremental-basedir=$data_path/full_2 $data_path/$(date -d "today" +"%H")-inc         echo "12点首次增量备份结束..."`date` elif [ $tim -ge "1" ]then         echo -e "########################################"        echo -e "#        incremental backup            #"        echo -e "########################################"        echo -e "开始增量备份..."`date`         /usr/bin/innobackupex --defaults-file=/etc/my.cnf --user=bakuser --password=1 --no-timestamp --socket=/usr/local/mysql/tmp/mysql.sock --incremental --incremental-basedir=$data_path/${can} $data_path/$(date -d "today" +"%H")-inc         echo "增量备份结束..."`date`else        echo "退出!"fi   # compress the data file. if [ $tim -eq "02" ]then        echo "开始压缩一天的备份..."        cd $data_path/                cd ..         /bin/tar czvf $(date -d "yesterday" +"%Y")-$(date -d "yesterday" +"%m")-$(date -d "yesterday" +"%d")-$(date -d "yesterday" +"%M").tar.gz      $(date -d "yesterday" +"%d")/         echo "压缩完毕!" # Delete the file of one day         echo "删除源文件..."         /bin/rm $(date -d "yesterday" +"%d")/ -rf         echo "删除完毕!" fi本文出自 “努力奔向前方” 博客,请务必保留此出处http://liucb.blog.51cto.com/3230681/880748... 全文

mysql mysql备份脚本 备份脚本

MySQL配置时提示无法连接到MySQL本地服务器

 说来惭愧啊,其实前段时间遇到过此问题,可是后来稀里糊涂的就解决了,详情可以找找我前面发表过的文章.这不这次就又遇到了,... 全文

MySQL

mysql dba系统学习(20)mysql存储引擎MyISAM

mysql存储引擎MyISAM1,创建myisam表... 全文

mysql

详细介绍mysql

MySQL数据库中,mysql-bin.000001mysql- bin.000002等文件是数据库的操作日志,例如UPDATE一个表,或者DELETE一些数据,即使该语句没有匹配的数据,这个命令也会存储到日志文件中,还包括每个语句执行的时间,也会记录进去的。这样做主要有以下两个目的:1:数据恢复如果你的数据库出问题了,而你之前有过备份,那么可以看日志文件,找出是哪个命令导致你的数据库出问题了,想办法挽回损失。2:主从服务器之间同步数据... 全文

MySQL数据库 mysql-bin.000001

mysql dba系统学习(21)mysql存储引擎InnoDB

mysql存储引擎InnoDB1,主体系结构:... 全文

mysql

MySQL Checkpoint机制

checkpoint干的事情:    将缓冲池中的脏页刷新回磁盘,不同之处在于每次从哪里取多少脏页刷新到磁盘,以及什么时候触发checkpoint。checkpoint解决的问题:     1.缩短数据库的恢复时间(数据库宕机时,不需要重做所有的日志,因checkpoint之前的页都已经刷新回磁盘啦)     2.缓冲池不够用时,将脏页刷新到磁盘(缓冲池不够用时,根据LRU算会溢出最近最少使用的页,若此页为脏页,需要强制执行checkpoint将脏也刷回磁盘)     3.重做日志不可用时,刷新脏页(采用循环使用的,并不是无限增大。当重用时,此时的重做日志还需要使用,就必须强制执行checkpoint将脏页刷回磁盘)... 全文

MySQL Checkpoint MySQL Checkpoint机制 Checkpoint机制

怎样使MySQL安全以对抗解密高手

当你连接一个MySQL服务器时,你通常应该使用一个口令。口令不以明文在连接上传输。所有其它信息作为能被任何人读懂的文本被传输。如果你担心这个,你可使用压缩协议(MySQL3.22和以上版本)使事情变得更难。甚至为了使一切更安全,你应该安装ssh。用它,你能在一个MySQL服务器与一个MySQL客户之间得到一个加密的TCP/IP连接。为了使一个MySQL系统安全,强烈要求你考虑下列建议:... 全文

MySQL MySQL安全

实战:mysql版本升级

 /***************************************************** mysql 5.6.19 升级到5.6.21 *****************************************************/ 升级前做好备份是必须的! ----1.查看现有版本mysql的数据目录位置 show variables like '%datadir%'; /usr/local/mysql01/data/ ---2.安装新版本MySQL 2.1.安装编译代码需要的包 yum -y install gcc gcc-c++ autoconf automake zlib* libxml* \ ncurses-devel libtool-ltdl-devel* make cmake bison bison-devel libaio 2.2.为mysql新建组和用户 #groupadd mysql #useradd -g mysql mysql 2.3.设置用户的系统资源限制 #vi /etc/security/limits.conf mysql soft nproc 2047 mysql hard nproc 16384 mysql soft nofile 1024 mysql hard nofile 65536 2.4.编译安装新版本mysql tar xvf mysql-5.6.21.tar.gz cd mysql-5.6.21 编译安装到新位置 cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql02 \ -DMYSQL_DATADIR=/usr/local/mysql02/data \ -DSYSCONFDIR=/etc \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DMYSQL_UNIX_ADDR=/usr/local/mysql02/mysql.sock \ -DMYSQL_TCP_PORT=3306 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_COLLATION=utf8_general_ci make make install 2.5 停止老版本mysql service mysqld stop ----3.配置MySQL 3.1.修改/usr/local/mysql权限 #mkdir -p /usr/local/mysql02 3.2.新建数据文件、临时文件 mkdir /usr/local/mysql02/{innodb_data,data,tmp} -p mkdir /usr/local/mysql02/mysql_logs/{binary_log,innodb_log,query_log,slow_query_log,error_log} -p 3.3.修改权限 cd /usr/local/mysql02 chown -R mysql . chgrp -R mysql . 3.4.修改参数 #vi /etc/my.cnf basedir = /usr/local/mysql#数据库安装目录指定到新版本的安装目录 datadir = /var/lib/mysql #原数据库数据目录保持原来的目录即可 skip-grant-tables #由于升级需要,跳过权限验证 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 中 #去掉STRICT_TRANS_TABLES,禁用数据严格模式 #只需要修改这些,其它的一般不需修改,如果需要将日志之类的转移到新目录,则按需修改 3.5.覆盖启动文件 #cp /usr/local/mysql02/support-files/mysql.server /etc/init.d/mysqld 3.6.执行表权限升级 #service mysqld start #重启新版本MySQL #/usr/local/mysql02/bin/mysql_upgrade #执行表权限升级 3.7.检查所有数据库 #/usr/local/mysql02/bin/mysqlcheck --all-databases -uroot -p123456 3.8.重新启动mysql #vi /etc/my.cnf 去掉skip-grant-tables #service mysqld restart #数据库升级成功 ... 全文

mysql版本升级 mysql小版本升

MySQL索引经验之浅见(1)

在数据库表中,使用索引可以大大提高查询速度。假如我们创建了一个testindex表:create table testindex(i_testid int not null,vc_name varchar(16) not null);我们随机向里面插入了1000条记录,其中有一条i_testid vc_name555 erquan在查找vc_name="erquan"的记录select * from testindex where vc_name='erquan';... 全文

MySQL索引 MySQL

使用xtrabackup备份mysql

一、下载下载地址:http://www.percona.com/downloads/XtraBackup/注:官方分4种包,二进制、源码、deb、rpm,这里直接下载二进制,解压后直接添加PATH变量使用即可二、安装(二进制包)tar zxf percona-xtrabackup-2.0.2-461.tar.gzmv percona-xtrabackup-2.0.2 /usr/local/xtrabackup... 全文

mysql 备份mysql xtrabackup innobackupex

Ubuntu 12.04 安装mysql及mysql

1、安装python开发包:sudo apt-get install python-dev2、安装mysql服务端、客户端及扩展包:sudo apt-get install mysql-server mysql-client libmysqlclient-dev3、安装python第三方库管理工具:sudo apt-get install  python-setuptools4、安装Mysql-python库:sudo easy_install mysql-python5、安装服务启动工具:sudo apt-get install sysv-rc-conf... 全文

ubuntu mysql python

MySQL双主(master

环境: 主机名 主机IP 操作系统 MySQL版本 mysqlA 172.16.4.235 CentOS 6.52.6.32-431.el6.x86_64mysql-community-server-5.7.5-0.6.m15.el6.x86_64 mysqlB 172.16.4.236 CentOS 6.52.6.32-431.el6.x86_64mysql-community-server-5.7.5-0.6.m15.el6.x86_64 架构:... 全文

MySQL5.7 MySQL Semisync

使用mysql

背景:之前实现的mysql同步复制功能(见笔者之前文章http://blog.csdn.net/kingofworld/article/details/39210937)只是双机热备功能,还不能做到Mysql链接的自动切换。本配置实现真正的mysql集群,使得在某台机子的mysql应用停止时,能让应用程序自动切换到另外一台机子的mysql连接,实现应用的高稳定性,并且使得扩展Mysql服务成为可能。本配置使用mysql-mmm(master-master Replication Manager for MySQL)组件实现集群功能。本次演示的配置使用三台机器,架构如下:... 全文

集群 架构 mysql mysql-mmm 备份

如何通过PHP取得MySQL procedure结果

总有网友问我,如何通过php调用MySQL的存储过程同时取得返回的结果集呢?确实,MySQL的存储过程大大方便了编程也提高了效率。但是,对于那些还在用php 4 的同学们来说可就麻烦了,因为php 4只能调用存储过程,但却无法直接取得返回结果集;不过,用php 5的mysqli函数就可以做到了。首先,重新编译php 5,增加对mysqli的支持,或者直接下载mysqli的扩展模块,这里不再细说。直接举个例子吧:1、创建存储过程,列出 test 库下的所有表:mysql>DELIMITER //mysql>CREATE PROCEDURE `yejr`()->BEGIN->SHOW TABLES;->END; //... 全文

PHP MySQL MySQL procedure

Mysql复制及代理

#####################################Mysql复制的作用和原理mysql-5.5实现主从复制... 全文

Mysql Mysql_Proxy 复制及代理

MySQL: mysql is not running but lock exists 的解决方法

启动mysql时出现以下错误: 解决方法:[root@YW-APP-002 mysql2]# rm -rf /var/lock/subsys/mysql 再次启动mysql,一切正常了: 如果出现以下错误: 解决方法:把存放mysql数据库目录的权限设置为mysql用户即可[root@YW-APP-002 data]# chown -R mysql:mysql mysql2 再次重启mysql,一切正常了: ... 全文

MySQL

MySQL多实例安装配置指南

系统环境:centos 6.2 64位 内核版本: 2.6.32-220.el6.x86_64mysql版本:5.1.62如果喜欢这篇博文,请给个赞,更多博文请访问 平凡的日子 linux开源技术博客一,MySQL多实例介绍及MySQL多实例的特点1、什么是MySQL多实例?   MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307,3308),运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的服务。2、MySQL多实例的特点有以下几点:   1)、有效利用服务器资源,当单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务。   2)、节约服务器资源   3)、资源互相抢占问题,当某个服务实例服务并发很高时或者开启慢查询时,会消耗更多的内存、CPU、磁盘IO资源,导致服务器上的其他实例提供服务的质量下降。二,MySQL多实例的安装配置1、首先创建mysql用户和组:[root@LVS_RS_104 ~]# groupadd mysql [root@LVS_RS_104 ~]# useradd -s /sbin/nologin -g mysql -M mysql 2、下载MySQL源码包并解压安装 [root@LVS_RS_104 ~]# wget http://mysql.ntu.edu.tw/Downloads/MySQL-5.1/mysql-5.1.62.tar.gz [root@LVS_RS_104 ~]# tar zxvf mysql-5.1.62.tar.gz [root@LVS_RS_104 ~]# cd mysql-5.1.62 [root@LVS_RS_104 mysql-5.1.62]# ./configure --prefix=/usr/local/mysql --enable-assembler --enable-thread-safe-client --with-mysqld-user=mysql --with-big-tables --without-debug --with-pthread --with-extra-charsets=complex --with-readine --with-ssl --with-embedded-server --enable-local-infole --with-plugin=partition,innobase --with-plugin-PLUGIN --with-mysqld-ldflags=-all-static --with-client-ldfags=-all-static [root@LVS_RS_104 mysql-5.1.62]# make && make install 3 mysql参数说明:--prefix=/usr/local/mysql   #指定mysql的安装路径--enable-assembler  #允许使用汇编模式(优化性能)--enable-thread-safe-client  #以线程方式编译mysql--with-mysqld-user=mysql  #指定mysql运行的系统的用户--with-big-tables #支持大表,即使是32位的系统也能支持4G以上的表--without-debug  #使用非debug模式--with-pthread   #强制使用pthread线程库编译--with-extra-charsets=complex   #mysql默认的字符集使用complex--with-ssl    #支持ssl--with-plugin=partition,innobase--with-plugin-PLUGIN--with-mysqld-ldflags=-all-static   #服务器使用静态库(优化性能)--with-client-ldfags=-all-static    #客户端使用静态库(优化性能)更多参数请看源码目录的INSTALL或者./configure --help4、创建MySQL多实例的数据目录 [root@LVS_RS_104 mysql-5.1.62]# mkdir /usr/local/mysql/data/{3306,3307,3308}/data -p [root@LVS_RS_104 mysql-5.1.62]# tree /usr/local/mysql/data/ /usr/local/mysql/data/ ├── 3306 │   └── data ├── 3307 │   └── data └── 3308     └── data  6 directories, 0 files 5、创建MySQL多实例配置文件这里和单实例配置不同。因为要配置多个配置文件要多份,我们可以通过vim命令来添加,如下 [root@LVS_RS_104 data]# vim /usr/local/mysql/data/3306/my.cnf [root@LVS_RS_104 data]# vim /usr/local/mysql/data/3307/my.cnf [root@LVS_RS_104 data]# vim /usr/local/mysql/data/3308/my.cnf MySQL多实例的配置文件my.cnf和启动文件在附件,读者可以下载下来放到各实例的目录,启动文件需要把属组和属主改为mysql并添加执行权限,如下: [root@LVS_RS_104 data]# chown mysql.mysql /usr/local/mysql/data/3306/mysql  [root@LVS_RS_104 data]# chown mysql.mysql /usr/local/mysql/data/3307/mysql  [root@LVS_RS_104 data]# chown mysql.mysql /usr/local/mysql/data/3308/mysql  [root@LVS_RS_104 data]# chmod +x /usr/local/mysql/data/3306/mysql  [root@LVS_RS_104 data]# chmod +x /usr/local/mysql/data/3307/mysql  [root@LVS_RS_104 data]# chmod +x /usr/local/mysql/data/3308/mysql 6、初始化MySQL数据目录并添加mysql命令道全局路径 [root@LVS_RS_104 data]# echo 'export PATH=$PATH:/usr/local/mysql/bin/' >>/etc/profile [root@LVS_RS_104 data]# source /etc/profile [root@LVS_RS_104 data]# mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/ data/3306/data/  [root@LVS_RS_104 data]# mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/ data/3307/data/ [root@LVS_RS_104 data]# mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/ data/3308/data/   7、启动MySQL多实例[root@LVS_RS_104 3306]# ./mysql start Starting MySQL... [root@LVS_RS_104 3306]# ../3307/mysql start Starting MySQL... [root@LVS_RS_104 3306]# ../3308/mysql start Starting MySQL... 检查端口看看mysql是否启动成功... 全文

mysql 多实例 mysql安装

MYSQL同步原理

Replication 线程   Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instance(我们称之 Slave)。在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Master 端。  要实现 MySQL 的 Replication ,首先必须打开 Master 端的Binary Log(mysql-bin.xxxxxx)功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全 顺序的执行日志中所记录的各种操作。打开 MySQL 的 Binary Log 可以通过在启动 MySQL Server 的过程中使用 “—log-bin” 参数选项,或者在 my.cnf 配置文件中的 mysqld 参数组([mysqld]标识后的参数部分)增加 “log-bin” 参数项。  MySQL 复制的基本过程如下:   1. Slave 上面的IO线程连接上 Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;   2. Master 接收到来自 Slave 的 IO 线程的请求后,通过负责复制的 IO 线程根据请求信息读取指定日志指定位置之后的日志信息,返回给 Slave 端的 IO 线程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息在 Master 端的 Binary Log 文件的名称以及在 Binary Log 中的位置;   3. Slave 的 IO 线程接收到信息后,将接收到的日志内容依次写入到 Slave 端的Relay Log文件(mysql-relay-bin.xxxxxx)的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master- info文件中,以便在下一次读取的时候能够清楚的高速Master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”   4. Slave 的 SQL 线程检测到 Relay Log 中新增加了内容后,会马上解析该 Log 文件中的内容成为在 Master 端真实执行时候的那些可执行的 Query 语句,并在自身执行这些 Query。这样,实际上就是在 Master 端和 Slave 端执行了同样的 Query,所以两端的数据是完全一样的。  实际上,在老版本中,MySQL 的复制实现在 Slave 端并不是由 SQL 线程和 IO 线程这两个线程共同协作而完成的,而是由单独的一个线程来完成所有的工作。但是 MySQL 的工程师们很快发现,这样做存在很大的风险和性能问题,主要如下:   首先,如果通过一个单一的线程来独立实现这个工作的话,就使复制 Master 端的,Binary Log日志,以及解析这些日志,然后再在自身执行的这个过程成为一个串行的过程,性能自然会受到较大的限制,这种架构下的 Replication 的延迟自然就比较长了。   其次,Slave 端的这个复制线程从 Master 端获取 Binary Log 过来之后,需要接着解析这些内容,还原成 Master 端所执行的原始 Query,然后在自身执行。在这个过程中,Master端很可能又已经产生了大量的变化并生成了大量的 Binary Log 信息。如果在这个阶段 Master 端的存储系统出现了无法修复的故障,那么在这个阶段所产生的所有变更都将永远的丢失,无法再找回来。这种潜在风险在Slave 端压力比较大的时候尤其突出,因为如果 Slave 压力比较大,解析日志以及应用这些日志所花费的时间自然就会更长一些,可能丢失的数据也就会更多。   所以,在后期的改造中,新版本的 MySQL 为了尽量减小这个风险,并提高复制的性能,将 Slave 端的复制改为两个线程来完成,也就是前面所提到的 SQL 线程和 IO 线程。最早提出这个改进方案的是Yahoo!的一位工程师“Jeremy Zawodny”。通过这样的改造,这样既在很大程度上解决了性能问题,缩短了异步的延时时间,同时也减少了潜在的数据丢失量。  当然,即使是换成了现在这样两个线程来协作处理之后,同样也还是存在 Slave 数据延时以及数据丢失的可能性的,毕竟这个复制是异步的。只要数据的更改不是在一个事务中,这些问题都是存在的。  如果要完全避免这些问题,就只能用 MySQL 的 Cluster 来解决了。不过 MySQL的 Cluster 知道笔者写这部分内容的时候,仍然还是一个内存数 据库的解决方案,也就是需要将所有数据包括索引全部都 Load 到内存中,这样就对内存的要求就非常大的大,对于一般的大众化应用来说可实施性并不是太大。当然,在之前与 MySQL 的 CTO David 交流的时候得知,MySQL 现在正在不断改进其 Cluster 的实现,其中非常大的一个改动就是允许数据不用全部 Load 到内存中,而仅仅只是索引全部 Load 到内存中,我想信在完成该项改造之后的 MySQL Cluster 将会更加受人欢迎,可实施性也会更大。... 全文

mysql同步 职场 休闲 mysql同步原理

【MySQL运维】MySQL多实例部署案例

昨天晚上在群中和一些网友聊到了MySQL多实例的话题,最早接触MySQL多实例还是在1年前,那会我刚步入运维行业,做过MySQL多实例的相关实验,在后来的工作中也很少用到多实例,一直就淡漠了它,昨天再次提及,故此再次重新整理下以前的笔记,参考一些大牛的观点,也参考我的好友贺总(尊称)的意见,特此写下这篇文章!废话不说,切入正题....... 全文

mysql 多实例