以上就是给各位分享MySQL5.7安装(多实例)最佳实践,其中也会对mysql5.7安装进行解释,同时本文还将给你拓展1155:字符串比较多实例、5.7.20多实例——MGR部署实战、activiti
以上就是给各位分享MySQL 5.7安装(多实例)最佳实践,其中也会对mysql 5.7 安装进行解释,同时本文还将给你拓展1155: 字符串比较 多实例、5.7.20 多实例——MGR部署实战、activiti 实战读书笔记 —— 第九章 多实例、CentOS 6 多实例 编译安装mariadb-5.5.59等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:- MySQL 5.7安装(多实例)最佳实践(mysql 5.7 安装)
- 1155: 字符串比较 多实例
- 5.7.20 多实例——MGR部署实战
- activiti 实战读书笔记 —— 第九章 多实例
- CentOS 6 多实例 编译安装mariadb-5.5.59
MySQL 5.7安装(多实例)最佳实践(mysql 5.7 安装)
MySQL 5.7安装(多实例)最佳实践,接上一篇《MySQL 5.7安装最佳实践》在已有的实例上面新增一个实例,主要是为了资源合理利用;下面是具体的步骤:
1、新实例目录规划,my.cnf文件配置
[root@localhost ~]# mkdir -p /data/mysql/mysql3307/{data,tmp,logs}
[root@localhost ~]# chown -R mysql:mysql /data/mysql/mysql3307
[root@localhost ~]# cp /etc/my.cnf /etc/my3307.cnf
[root@localhost ~]# vim /etc/my3307.cnf
:%s/3306/3307/g -------#替换3006为3307
:wq -------#保存退出
2、新实例初始化安装,error日志查看
[root@localhost ~]# /usr/local/mysql/bin/mysqld --defaults-file=/etc/my3307.cnf --initialize
[root@localhost ~]# more /data/mysql/mysql3307/data/error.log
没有error就表示初始化完成了。
3、新实例启动,error日志查看
[root@localhost ~]# /usr/local/mysql/bin/mysqld --defaults-file=/etc/my3307.cnf &
[root@localhost ~]# more /data/mysql/mysql3307/data/error.log
没有error就表示启动完成了。
4、新实例root密码修改,配置远程连接权限
[root@localhost ~]# more /data/mysql/mysql3307/data/error.log |grep password
2018-12-28T15:59:10.065970+08:00 1 [Note] A temporary password is generated for root@localhost: yK>1MkFsrr8N
root用户的临时密码为:yK>1MkFsrr8N
[root@localhost ~]# mysql -S /tmp/mysql3307.sock -p
Enter password: 【这里输入上面的临时密码】
set global super_read_only=0; set global read_only=0;
(unknown)@localhost [(none)]>alter user user() identified by ''root''; -------#修改当前用户密码为root
-- END --
1155: 字符串比较 多实例
时间限制: 1 Sec 内存限制: 128 MB
提交: 7442 解决: 3297
[状态] [讨论版] [提交] [命题人:admin]
题目描述
比较字符串大小,但比较的规则不同字典序规则。字符比较新规则如下:A < a < B < b < ………… < Z < z。
输入
输入数据包含多个测试实例,每个测试实例占两行,每一行有一个字符串(只包含大小写字母, 长度小于10000)。
输出
如果第一个字符串小于第二个,输出YES,否则,输出NO。 注意:A < a < B < b < ………… < Z < z。
样例输入 Copy
abc
Bbc
Ab
a ABcef
ABce
样例输出 Copy
YES
YES
NO
#include<stdio.h>
#include<string.h>
int main()
{
char a[10005],b[10005];
int i;
while((scanf("%s%s",a,b))!=EOF){
for(i=0;a[i]!=''\0'';i++){
if(a[i]>=''a'')
a[i]=(a[i]-96)*2+1;
else
a[i]=(a[i]-64)*2;
}
for(i=0;b[i]!=''\0'';i++){
if(b[i]>=''a'')
b[i]=(b[i]-96)*2+1;
else
b[i]=(b[i]-64)*2;
}
if(strcmp(a,b)>=0)
printf("NO\n");
else
printf("YES\n");
}
return 0;
}
5.7.20 多实例——MGR部署实战
数据库 | MySQL:5.7.20 多实例——MGR部署实战
MGR介绍
基于传统异步复制和半同步复制的缺陷——数据的一致性问题无法保证,MySQL官方在5.7.17版本正式推出组复制(MySQL Group Replication,简称MGR)。
由若干个节点共同组成一个复制组,一个事务的提交,必须经过组内大多数节点(N / 2 + 1)决议并通过,才能得以提交。如上图所示,由3个节点组成一个复制组,Consensus层为一致性协议层,在事务提交过程中,发生组间通讯,由2个节点决议(certify)通过这个事务,事务才能够最终得以提交并响应。
引入组复制,主要是为了解决传统异步复制和半同步复制可能产生数据不一致的问题。组复制依靠分布式一致性协议(Paxos协议的变体),实现了分布式下数据的最终一致性,提供了真正的数据高可用方案(是否真正高可用还有待商榷)。其提供的多写方案,给我们实现多活方案带来了希望。
1. 创建用户
useradd mysql
2. 上传5.7.20软件到/usr/local解压
tar -zxvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.20-linux-glibc2.12-x86_64/ mysql
3. 环境变量
vi /root/.bash_profile
export PATH=$PATH:/usr/local/mysql/bin
mkdir -p /data/3306/data /data/3307/data /data/3308/data
chown -R mysql.mysql /data /usr/local/mysql
4. 配置文件说明
配置示例:
++++++++++3306++++++
[mysqld]
user=mysql
datadir=/data/3306/data
basedir=/usr/local/mysql
port=3306
socket=/data/3306/mysql.sock
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="22d56f7c-dfe5-4eb1-a21a-cf9c27e8d625"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address="192.168.29.128:33061"
loose-group_replication_group_seeds="192.168.29.128:33061,192.168.29.128:33062,192.168.29.128:33063"
loose-group_replication_bootstrap_group=off
loose-group_replication_single_primary_mode=FALSE
loose-group_replication_enforce_update_everywhere_checks= TRUE
++++++++++3307++++++
[mysqld]
user=mysql
datadir=/data/3307/data
basedir=/usr/local/mysql
port=3307
socket=/data/3307/mysql.sock
server_id=2
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="22d56f7c-dfe5-4eb1-a21a-cf9c27e8d625"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address="192.168.29.128:33062"
loose-group_replication_group_seeds="192.168.29.128:33061,192.168.29.128:33062,192.168.29.128:33063"
loose-group_replication_bootstrap_group=off
loose-group_replication_single_primary_mode=FALSE
loose-group_replication_enforce_update_everywhere_checks= TRUE
++++++++++3308++++++
[mysqld]
user=mysql
datadir=/data/3308/data
basedir=/usr/local/mysql
port=3308
socket=/data/3308/mysql.sock
server_id=3
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW
transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="22d56f7c-dfe5-4eb1-a21a-cf9c27e8d625"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address="192.168.29.128:33063"
loose-group_replication_group_seeds="192.168.29.128:33061,192.168.29.128:33062,192.168.29.128:33063"
loose-group_replication_bootstrap_group=off
loose-group_replication_single_primary_mode=FALSE
loose-group_replication_enforce_update_everywhere_checks= TRUE
组复制部分,配置文件介绍:
group_replication变量使用的loose-前缀是指示Server启用时尚未加载复制插件也将继续启动
transaction_write_set_extraction = XXHASH64
##指示Server必须为每个事务收集写集合,并使用XXHASH64哈希算法将其编码为散列
loose-group_replication_group_name="01e5fb97-be64-41f7-bafd-3afc7a6ab555"
##表示将加入或者创建的复制组命名为01e5fb97-be64-41f7-bafd-3afc7a6ab555
##可自定义(通过cat /proc/sys/kernel/random/uuid)
loose-group_replication_start_on_boot=off
##设置为Server启动时不自动启动组复制
loose-group_replication_local_address="192.168.29.128:33061"
##绑定本地的192.168.29.128及33061端口接受其他组成员的连接,IP地址必须为其他组成员可正常访问
loose-group_replication_group_seeds="192.168.29.128:33061,192.168.29.128:33062,192.168.29.128:33063"
##本行为告诉服务器当服务器加入组时,应当连接到192.168.29.128:33061,192.168.29.128:33062,192.168.29.128:33063
##这些种子服务器进行配置。本设置可以不是全部的组成员服务地址。
loose-group_replication_bootstrap_group = off
##配置是否自动引导组
loose-group_replication_ip_whitelist=”10.30.0.0/16,10.31.0..0/16,10.27.0.0/16″
##配置白名单,默认情况下只允许192.168.29.128连接到复制组,如果是其他IP则需要配置。
5. 初始化数据,并启动数据库节点
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/data
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3308/data
mysqld_safe --defaults-file=/data/3306/my.cnf &
mysqld_safe --defaults-file=/data/3307/my.cnf &
mysqld_safe --defaults-file=/data/3308/my.cnf &
6. 3306节点加入GR
创建复制用户
mysql -S /data/3306/mysql.sock
set sql_log_bin=0;
grant replication slave,replication client on *.* to repl@''localhost'' identified by ''123'';
grant replication slave,replication client on *.* to repl@''127.0.0.1'' identified by ''123'';
grant replication slave,replication client on *.* to repl@''192.168.29.%'' identified by ''123'';
SET SQL_LOG_BIN=1;
注:如果为三台独立节点,需要将localhost、127.0.0.1和远程主机域都授权用户
开启分布式复制
change master to master_user=''repl'',master_password=''123'' for channel ''group_replication_recovery'';
加载GR插件
install plugin group_replication soname ''group_replication.so'';
show plugins;
启动复制程序
set global group_replication_bootstrap_group=ON;
start group_replication;
set global group_replication_bootstrap_group=OFF;
#检测组是否创建并已加入新成员
select * from performance_schema.replication_group_members;
7. 3307加入GR:**
创建复制用户
mysql -S /data/3307/mysql.sock
set sql_log_bin=0;
grant replication slave,replication client on *.* to repl@''localhost'' identified by ''123'';
grant replication slave,replication client on *.* to repl@''127.0.0.1'' identified by ''123'';
grant replication slave,replication client on *.* to repl@''192.168.29.%'' identified by ''123'';
SET SQL_LOG_BIN=1;
注:如果为三台独立节点,需要将localhost、127.0.0.1和远程主机域都授权用户
开启分布式复制
change master to master_user=''repl'',master_password=''123'' for channel ''group_replication_recovery'';
加载GR插件
install plugin group_replication soname ''group_replication.so'';
show plugins;
启动复制程序
start group_replication;
#检测组是否创建并已加入新成员
select * from performance_schema.replication_group_members;
注: 前面的用户密码修改和创建用户操作必须设置binlog不记录,执行后再打开,否则会引起START GROUP_REPLICATION执行报错:
ERROR 3092 (HY000): The server is not configured properly to be an active member of the group. Please see more details on error log.
解决方案是:根据提示打开group_replication_allow_local_disjoint_gtids_join选项,mysql命令行执行:
mysql> set global group_replication_allow_local_disjoint_gtids_join=ON;
然后再执行:
mysql> start group_replication;
8. 3308加入GR
创建复制用户
mysql -S /data/3308/mysql.sock
set sql_log_bin=0;
grant replication slave,replication client on *.* to repl@''localhost'' identified by ''123'';
grant replication slave,replication client on *.* to repl@''127.0.0.1'' identified by ''123'';
grant replication slave,replication client on *.* to repl@''192.168.29.%'' identified by ''123'';
set sql_log_bin=1;
注:如果为三台独立节点,需要将localhost、127.0.0.1和远程主机域都授权用户
开启分布式复制
change master to master_user=''repl'',master_password=''123'' for channel ''group_replication_recovery'';
加载GR插件
install plugin group_replication soname ''group_replication.so'';
show plugins;
启动复制程序
start group_replication;
#检测组是否创建并已加入新成员
select * from performance_schema.replication_group_members;
activiti 实战读书笔记 —— 第九章 多实例
1、配置多实例的活动在流程运行时运行时顺序方式或并行放肆创建活动实例。
2、任务多实例 在任务中添加 <multiInstanceLoopCharacteristics> 元素来实现:
<serviceTask id="servicetask1" name="Service Task" activiti:expression="${count+1}" activiti:resultVariableName="count">
<multiInstanceLoopCharacteristics isSequential="false">
<loopCardinality>${loop}</loopCardinality>
</multiInstanceLoopCharacteristics>
</serviceTask>
3、请假会签审批的用户任务多实例配置
<userTask id="countersign" name="部门/人事会签审批" activiti:candidateGroups="${user}">
<extensionElements>
<activiti:formProperty id="approved" name="审批意见" type="enum">
<activiti:value id="true" name="同意"></activiti:value>
<activiti:value id="false" name="拒绝"></activiti:value>
</activiti:formProperty>
<activiti:taskListener event="complete" delegateExpression="${leaveCounterSignCompleteListener}"/>
</extensionElements>
<multiInstanceLoopCharacteristics isSequential="false" activiti:collection="users" activiti:elementVariable="user"/>
</userTask>
此外添加了一个任务监听器,每次审批通过将 approvedCounter 属性自增 1:
public class LeaveCounterSignCompleteListenter implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
String approved = (String)delegateTask.getVariable("approved");
if(approved.equals("true")){
Long agreeCounter = (Long)delegateTask.getVariable("approvedCounter");
delegateTask.setVariable("approvedCounter", agreeCounter + 1);
}
}
}
<startEvent id="startevent1" name="Start" activiti:initiator="applyUserId">
<extensionElements>
<activiti:formProperty id="startDate" name="请假开始日期" type="date" datePattern="yyyy-MM-dd" required="true"></activiti:formProperty>
<activiti:formProperty id="endDate" name="请假结束日期" type="date" datePattern="yyyy-MM-dd" required="true"></activiti:formProperty>
<activiti:formProperty id="reason" name="请假原因" type="string" required="true"></activiti:formProperty>
<activiti:formProperty id="users" name="审批参与人" type="users"></activiti:formProperty>
<activiti:formProperty id="validScript" type="javascript" default="alert(''表单加载完毕'');"></activiti:formProperty>
</extensionElements>
</startEvent>
public class UsersFormType extends AbstractFormType {
@Override
public String getName() {
return "users";
}
@Override
public Object convertFormValueToModelValue(String propertyValue) {
String[] values = StringUtils.split(propertyValue, ",");
return Arrays.asList(values);
}
@Override
public String convertModelValueToFormValue(Object modelValue) {
return Objects.toString(modelValue);
}
}
List<AbstractFormType> customFormTypes = new ArrayList<AbstractFormType>();
customFormTypes.add(new JavaScriptFormType());
customFormTypes.add(new UsersFormType());
processEngineConfiguration.setCustomFormTypes(customFormTypes);
5、审批意见
在 taskService 接口中定义了 3 个和意见相关的方法:
addComment(String taskId, String processInstanceId, String message);
getProcessInstanceComments(String processInstanceId);
getTaskAttachments(String taskId)
第一方法创建意见,第二个和第三个方法分别根据流程实例 ID 和任务 ID 读取相关意见。
CentOS 6 多实例 编译安装mariadb-5.5.59
系统平台:
CentOS release 6.9 (Final)
内核 2.6.32-696.el6.x86_64
1.去官网下载适合的源码包
http://mariadb.org/
mariadb-5.5.59.tar.gz
检查系统内是否安装了数据库。
#rpm -qa|grep MariaDB
#rpm -qa|grep mysql
2.去官网下载cmake源码包
https://cmake.org/
cmake最新版本需要c++11支持,gcc4.8以下并未包含,因此,需要下载cmake-3.9.6版本,此版本并不需要C + +11
cmake-3.9.6.tar.gz
查看当前系统gcc版本
#gcc -v
gcc version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
3.解压cmake包至任意临时目录
#tar xvf cmake-3.9.6.tar.gz -C /app
4.编译安装cmake
安装依赖包
# yum install ncurses-devel libaio-devel openssl-devel -y
# yum groupinstall Development tools -y
# cd /app/cmake-3.9.6
#./configure --prefix=/usr/local && gmake -j 4
#gmake install #which cmake /usr/local/bin/cmake #cmake --version cmake version 3.9.6
5.创建mysql组和账号
#groupadd -g 500 mysql
#useradd -u 500 -g mysql -s /sbin/nologin -M mysql
6.解压mariadb包至任意临时目录
#tar xvf mariadb-5.5.59.tar.gz -C /app
7.编译安装mariadb
# cd mariadb-5.5.59
以下的编译参数,根据自己的需求定制
# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mariadb-5.5.59 \
-DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS=all \ -DWITH_READLINE=1 \ -DWITH_SSL=system \ -DWITH_ZLIB=system \ -DWITH_EMBEDDED_SERVER=1 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_DEBUG=0 我使用的AUSU笔记本是 I5 1CPU 4核,2GB内存,8分钟编译完成。 # make -j 4 && make install
8.创建软链接mysql指向解压后的目录
#cd /usr/local/
#ln -s mariadb-5.5.59/ mysql
9.修改mysql文件夹所属者和所属组
#chown -R mysql.mysql /usr/local/mysql/
10.添加PATH至环境变量中
#echo ''PATH=/usr/local/mysql/bin:$PATH'' >> /etc/profile.d/mysql.sh
检查文件
#cat /etc/profile.d/mysql.sh 加载环境变量文件 并检查 #source /etc/profile.d/mysql.sh #echo $PATH
11.创建数据库存放文件夹并修改权限
#mkdir -pv /data/sqldb/{3306,3307,3308}/{etc,log,data,pid,socket,tmp} #chown -R mysql.mysql /data/sqldb/ #chmod -R 770 /data/sqldb/
12.复制主配置文件my.cnf
这里先要确认下本机的内存多少,以便使用一个参考模板。
#grep memory support-files/*
找到适合本机内存的模板
本机内存为512M,所以选择了my-large.cnf这个配置文件
#\cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf
13.修改配置文件
#vim /etc/my.cnf
因为是多实例安装,这里的配置注意参考我的。
当然也可以使用脚本自己带的示例生成样版示例,自行进行修改
#mysqld_multi --example
在配置文件中多个实例使用 mysqldN 进行表示,其中N 代表实例的id,用于在mysqld_multi 命令中指定实例
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = multi_admin
password = multipass
# The MariaDB server
[mysqld3306]
port = 3306
socket = /data/sqldb/3306/socket/mysql3306.sock
pid-file = /data/sqldb/3306/pid/mysql3306.pid
datadir = /data/sqldb/3306/data
tmpdir = /data/sqldb/3306/tmp
innodb_file_per_table = 1
skip_name_resolve = 1
#******************************* Logs settings ***************************
log-error = /data/sqldb/3306/log/3306error.log
[mysqld3307]
port = 3307
socket = /data/sqldb/3307/socket/mysql3307.sock
pid-file = /data/sqldb/3307/pid/mysql3307.pid
datadir = /data/sqldb/3307/data
tmpdir = /data/sqldb/3307/tmp
******************************* Logs settings *************************** log-error = /data/sqldb/3307/log/3307error.log [mysqld3308] port = 3308 socket = /data/sqldb/3308/socket/mysql3308.sock pid-file = /data/sqldb/3308/pid/mysql3308.pid datadir = /data/sqldb/3308/data tmpdir = /data/sqldb/3308/tmp ******************************* Logs settings *************************** log-error = /data/sqldb/3308/log/3308error.log
14.安装数据库相关文件
# cd /usr/local/mysql
查看下安装程序的安装参数
#./scripts/mysql_install_db --help
必须在此文件夹内执行以下命令,否则会报以下错误
FATAL ERROR: Could not find ./bin/my_print_defaults #./scripts/mysql_install_db --datadir=/data/sqldb/3306/data --user=mysql --skip-name-resolve --basedir=/usr/local/mysql #./scripts/mysql_install_db --datadir=/data/sqldb/3307/data --user=mysql --skip-name-resolve --basedir=/usr/local/mysql #./scripts/mysql_install_db --datadir=/data/sqldb/3307/data --user=mysql --skip-name-resolve --basedir=/usr/local/mysql 参数说明 :指定此实例的数据目录,跳过DNS解析,指定my_print_defaults的父级目录
出现2个OK即表示安装正常。
15.复制多实例启动服务脚本至/etc/init.d目录
#cp /usr/local/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multi
16.启动一个实例3306
# mysqld_multi start 3306
17.进行安全配置
由于此源码包中的mysql_secure_installation 工具默认使用 /tmp/mysql.sock 文件进行连接,可以通过创建软连接来指向自定义的socket 文件
#ln -s /data/sqldb/3306/socket/mysql3306.sock /tmp/mysql.sock
#/usr/local/mysql/bin/mysql_secure_installation
Enter current password for root 默认为空
Set root password 设置mysql root密码
Remove anonymous users 是否移除匿名用户登录
Disallow root login remotely 是否禁止root远程登录 Remove test database and access to it? 是否移除test数据和test账号 Reload privilege tables now? 是否立即更新权限 Thanks for using MariaDB!
用完之后删除
#rm -f /tmp/mysql.sock
18. 重复以上2个步骤,将各个实例安全配置完
注意 ln -s /data/sqldb/这里要变化/socket/mysql这里要变化.sock /tmp/mysql.sock
19. 添加每个实例的安全关闭数据库账号
按上面的配置进行mysqld_multi可以正常启动,但关闭时确无法正常关闭。因此需要单独创建一个用于安全账号,调用mysqladmin命令进行关闭。
#mysql -uroot -p -S /data/sqldb/3306/socket/mysql3306.sock -e "grant shutdown on *.* to multi_admin@''localhost'' identified by ''multipass'';"
#mysql -uroot -p -S /data/sqldb/3307/socket/mysql3307.sock -e "grant shutdown on *.* to multi_admin@''localhost'' identified by ''multipass'';"
#mysql -uroot -p -S /data/sqldb/3308/socket/mysql3308.sock -e "grant shutdown on *.* to multi_admin@''localhost'' identified by ''multipass'';" 确认,以下指令更换socket后重复执行即可。 #mysql -uroot -p -S /data/sqldb/3306/socket/mysql3306.sock -e ''select user,password,host from mysql.user where user="multi_admin";'' Enter password: +-------------+-------------------------------------------+-----------+ | user | password | host | +-------------+-------------------------------------------+-----------+ | multi_admin | *4FD92416C02EC3BD04A97613DB2CB33717E99D0F | localhost | +-------------+-------------------------------------------+-----------+
20.将刚才创建的账号密码添加至主配置文件/etc/my.cnf
[mysqld_multi]
user = multi_admin
password = multipass
如果两个实例的数据库关闭密码(mysql的密码,不是系统密码)相同时,可以通过上面的方式进行设置,如果不同,需要在mysqld_multi项里注释掉password项(相当于全局配置),
在各实例里(有生效作用域的配置)添加相应的pasword密码。
21. 添加开机启动
#chkconfig --add mysqld_multi
#chkconfig --list mysqld_multi
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off 默认这样添加脚本的话,在启动时会报以下错误 WARNING: my_print_defaults command not found. Please make sure you have this command available and in your path. The command is available from the latest MySQL distribution. ABORT: Can''t find command ''my_print_defaults''. This command is available from the latest MySQL distribution. Please make sure you have the command in your PATH. 解决方法: 第一种.在/etc/init.d/mysqld_multi脚本中的最开始行添加PATH PATH=/usr/local/mysql/bin:$PATH 第二种.添加一个软链接 #ln -s /usr/local/mysql/bin/my_print_defaults /usr/bin/
22.服务器脚本的使用方法
# mysqld_multi [options] {start|stop|reload|report} [实例编号[,实例编号] ...]
实例编号在/etc/my.cnf中这些位置
[mysqld实例编号]
如:
mysqld_multi start 1-3 启动实例1、2、3 mysqld_multi stop 1-3 关闭实例1、2、3 mysqld_multi stop 8,10-13 关闭实例8、10至13 mysqld_multi stop 没有参数就是全部关闭 mysqld_multi start 启动全部实例
23.客户端连接
本机通过mysql命令进行连接时会受到影响,需要通过-S选项指定socket文件的位置,而远程主机连接不受影响。如:
#mysql -uroot -p -S /data/sqldb/3306/socket/mysql3306.sock
#mysql -uroot -p -h192.168.5.100
至此,MariaDB多实例 编译安装方式安装完毕。
不足之处
mysqld_multi统一管理多个MySQL实例。虽有方便之处,但在使用过程中。也发现了一些不足之处,
1.选项过于简单。仅仅有start、stop、report,而没有status项,所以无法查看服务的状态;
2.在启动、关闭服务时,仅仅是运行start、stop这么一个操作。而不跟踪操作结果,所以无法确保操作成功运行。
我们今天的关于MySQL 5.7安装(多实例)最佳实践和mysql 5.7 安装的分享就到这里,谢谢您的阅读,如果想了解更多关于1155: 字符串比较 多实例、5.7.20 多实例——MGR部署实战、activiti 实战读书笔记 —— 第九章 多实例、CentOS 6 多实例 编译安装mariadb-5.5.59的相关信息,可以在本站进行搜索。
本文标签: