MySQL、MariaDB安装和多实例配置(4)

Whether to enable LOCAL capability in the client library for LOAD DATA INFILE.
This option controls client-side LOCAL capability, but the capability can be set on the server side at server startup with the --local-infile option.

-DMYSQL_TCP_PORT=port_num

指定MySQL的TCP端口,默认是3306。可以在启动服务时使用--port选项指定。

-DMYSQL_UNIX_ADDR=file_name

指定MySQL的套接字路径,必须是绝对路径,默认是/tmp/mysql.sock。可以在启动服务时使用--port选项指定。

-DWITH_EXTRA_CHARSETS=name
Which extra character sets to include:

all: All character sets. This is the default.

complex: Complex character sets.

none: No extra character sets.

-DWITH_INNODB_MEMCACHED=bool

Whether to generate memcached shared libraries (libmemcached.so and innodb_engine.so).

-DWITH_SSL={ssl_type|path_name}
The type of SSL support to include (if any) or the path name to the OpenSSL installation to use.

ssl_type can be one of the following values:

no: No SSL support. This is the default before MySQL 5.6.6. As of 5.6.6, this is no longer a permitted value and the default is bundled.

yes: Use the system SSL library if present, else the library bundled with the distribution.

bundled: Use the SSL library bundled with the distribution. This is the default as of MySQL 5.6.6.

system: Use the system SSL library.

path_name, permitted for MySQL 5.6.7 and after, is the path name to the OpenSSL installation to use. Using this can be preferable to using the ssl_type value of system, for it can prevent CMake from detecting and using an older or incorrect OpenSSL version installed on the system. (Another permitted way to do the same thing is to set the CMAKE_PREFIX_PATH option to path_name.).

-DWITH_ZLIB=zlib_type

bundled: Use thezliblibrary bundled with the distribution. This is the default.

system: Use the system zlib library.

2. mysql多实例配置

mysql可以实现多实例,但因为多实例会共用服务器资源,导致资源争用,在某实例某一刻资源占用很多时(高并发、慢查询),其他的实例会受到影响。

无论是rpm安装、通用二进制安装还是编译安装,都有两种方法实现多实例。

共用配置文件
在my.cnf中配置多个"[mysqldN]",N是一个数字,表示MySQL服务。
启停的时候使用mysqld_multi {start|stop|restart} N。N可以是单个数字,也可以是逗号分隔的多个数字,还可以是短横线表示的范围数字。如果不是rpm包安装的,则mysqld_multi文件的路径在support-files中,将其copy到/etc/init.d下即可(没有原生态的systemd多实例服务管理脚本)。 mysqld_multi start 1,2,4-6

单独的配置文件和启动程序(推荐)
MySQL只需安装一次,即不同实例使用同一安装程序。但每个实例使用单独的配置文件、服务管理脚本、datadir目录和socket,并且启停mysqld服务时需要指定套接字文件。

2.1 mysql多实例配置过程

本文介绍第二种方法,并采用rpm包安装的mysql实现多实例。再次说明,无论使用何种方式安装mysql,都可以实现多实例,其实看明白下面配置的过程就知道了。

创建并设置datadir,并初始化、分别提供配置文件。

shell> mkdir -p /mydata/{3306,3307}/data shell> chown -R mysql.mysql /mydata/{3306,3307}/data shell> mysql_install_db --datadir=/mydata/3306/data --user=mysql shell> mysql_install_db --datadir=/mydata/3307/data --user=mysql shell> cp /etc/my.cnf /mydata/3306/my.cnf shell> cp /etc/my.cnf /mydata/3307/my.cnf

如果是设置mysql 5.7的多实���,则初始化时使用如下命令替换上面的mysql_install_db。

shell> mysqld --initialize-insecure --datadir=/mydata/3306/data --user=mysql shell> mysqld --initialize-insecure --datadir=/mydata/3307/data --user=mysql

分别修改两个配置文件。

#以下是3306实例的配置文件要修改的部分。 shell> vim /mydata/3306/my.cnf [mysqld] port=3306 datadir=/mydata/3306/data socket=/mydata/3306/data/mysql.sock server_id=1 [mysqld_safe] log-error=/mydata/3306/data/mysqld.log pid-file=/mydata/3306/data/mysqld.pid #以下是3307实例的配置文件要修改部分。 shell> vim /mydata/3307/my.cnf [mysqld] port=3307 datadir=/mydata/3307/data socket=/mydata/3307/data/mysql.sock server_id=2 [mysqld_safe] log-error=/mydata/3307/data/mysqld.log pid-file=/mydata/3307/data/mysqld.pid 2.2 提供sysV服务管理脚本

再分别提供服务管理脚本。

以下是3306实例的管理脚本/etc/init.d/mysqld3306,内容修改自原有管理脚本/etc/init.d/mysqld。

由于我的示例中mysql是采用rpm安装,所以mysql的basedir为/usr,如果是编译安装或通用二进制安装,则对应修改下面脚本中的basedir变量。

下面的datadir变量设置为/mydata/$port/data。请务必和上面的初始化设置和配置文件中设置的相同。

将此管理脚本复制为/etc/init.d/mysqld3307,再修改下port=3307即可作为3307实例的服务管理脚本。

此脚本不会初始化mysql(我把这部分代码删了)创建实例,所以启动服务前务必先初始化好对应的mysql实例。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/34940e79b6de6dc3cc1570e752003025.html