Navicat连接SQL Server提示: [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序

首次使用Navicat,连接SQL server的时候如果没有安装对于的模块会提示 "[IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序" 错误,

原因是没有安装对应的模块msodbcsql_64.msi,相关文件在程序根目录有提供,所以在安装目录找到对应文件安装即可。

★ 桌面Navicat图标——右键——打开文件位置

★ 双击打开msodbcsql_64.msi,安装的时候注意选择"Will be installed on local hard drive"

★ 安装完成后重新打开软件进行连接即可

SQL Server 无域通过证书设置主体镜像+见证服务器

搭建的时候参考了两篇文档

SqlServer2008R2镜像(无域) - Yu2

SQL SERVER 基于数据库镜像的主从同步(数据库镜像实践汇总) - 郭大侠1 

个人操作总结:

1、环境准备:

最好相同系统,相同sqlserver版本,相同目录,相同IP段

SQL Server最好2005sp1 及以上,且是企业/开发/数据库中心版

2、操作步骤

1、创建数据库密钥——创建出站证书——用证书创建端点——创建登录账户——为登录账户创建用户——使用证书为用户授权——授权端口

2、备份数据库——还原数据库——创建镜像——添加见证服务器

注意:

为了操作方便,可以先分别创建密钥、证书、端点、账户后相互分发证书,然后再创建其他两个服务器登录用户并授权提高效率,操作过程中使用命令大致相同,容易搞混,要细心

新安装 步骤

主服务器HostA 从服务器HostB 见证服务器HostC
1.创建数据库密钥 1.创建数据库密钥 1.创建数据库密钥
2.基于1密钥创建出站证书 2.基于1密钥创建出站证书 2.基于1密钥创建出站证书
3.使用证书创建端点 3.使用证书创建端点 3.使用证书创建端点
4.导出证书并复制到其他服务器 4.导出证书并复制到其他服务器 4.导出证书并复制到其他服务器
5.为 从/见证 服务器创建登录名 5.为 主/见证 服务器创建登录名 5.为 主/从 服务器创建登录名
6.创建使用登录名5的用户 6.创建使用登录名5的用户 6.创建使用登录名5的用户
7.使用证书为6中用户授权 7.使用证书为6中用户授权 7.使用证书为6中用户授权
8.对5中登录名进行端点授权 8.对5中登录名进行端点授权 8.对5中登录名进行端点授权
9.主数据库设置为完全恢复,并全备复制到服务器 9.以norecovery模式还原需要镜像的库
10.(后做)设置镜像伙伴 10.(先做)设置镜像伙伴
11.检验主从切换 11.检验主从切换

实操SQL命令

下面例子password的值自行修改,HostB和HostC命令和HostA大致相同,注意修改下对应的名称

主体服务器HostA 镜像服务器HostB 见证服务器HostC
1.创建密钥 USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Password';
同HostA 同HostA
2.创建证书 CREATE CERTIFICATE CertA
WITH Subject = 'CertA',
Expiry_Date = '2030-1-1';
CREATE CERTIFICATE CertB
WITH Subject = 'CertB',
Expiry_Date = '2030-1-1';
CREATE CERTIFICATE CertC
WITH Subject = 'CertC',
Expiry_Date = '2030-1-1';
3.创建端点 CREATE ENDPOINT [DatabaseMirroring]
STATE = STARTED AS TCP (
LISTENER_PORT = 5022,
LISTENER_IP = ALL )
FOR DATABASE_MIRRORING (
AUTHENTICATION =CERTIFICATE CertA,
ENCRYPTION = REQUIRED Algorithm AES,
ROLE =ALL );
同HostA
改CertA为CertB
同HostA
改CertA为CertC
4.备份证书 BACKUP CERTIFICATE CertA
TO FILE = 'C:\Users\Administrator\Desktop\CertA.cer'
同HostA
改CertA为CertB
同HostA
改CertA为CertC
把生成的证书分别复制另外两个服务器
5.创建账户 CREATE LOGIN LoginB WITH PASSWORD = 'Password';
CREATE LOGIN LoginC WITH PASSWORD = 'Password';
同HostA
改LoginB为LoginA
同HostA
改LoginC为LoginA
6.创建用户 CREATE USER UserB For Login LoginB;
CREATE USER UserC For Login LoginC;
同HostA
改CertB为CertA
改LoginB为LoginA
同HostA
改CertC为CertA
改LoginC为LoginA
7.证书授权 CREATE CERTIFICATE CertB
AUTHORIZATION UserB
FROM FILE = 'C:\Users\Administrator\Desktop\CertB.cer';CREATE CERTIFICATE CertC
AUTHORIZATION UserC
FROM FILE = 'C:\Users\Administrator\Desktop\CertC.cer';
同HostA
改CertB为CertA
改UserB为UserA
同HostA
改CertC为CertA
改UserC为UserA
8.端口授权 GRANT CONNECT ON ENDPOINT::[DatabaseMirroring] TO [LoginB];
GRANT CONNECT ON ENDPOINT::[DatabaseMirroring] TO [LoginC];
同HostA
改LoginB为LoginA
同HostA
改LoginC为LoginA

9.备份与还原

数据库——右键-任务——备份

复制到镜像服务器——数据库——右键-任务——还原

10.创建镜像

分别看下网络地址格式如 TCP://win-xxxxx:5022

1).先在镜像机执行

ALTER DATABASE 数据库名
SET PARTNER = '主体服务器地址tcp://xxxx:5022';

2).之后在主体机执行

ALTER DATABASE 数据库名
SET PARTNER = '镜像服务器地址tcp://xxxx:5022';

11.测试故障切换

数据库——任务——镜像——开始故障转移

12.加入见证服务器

在主体服务器添加

数据库——任务——镜像——填入主体服务器地址

Mysql提示too manny connections

虚拟主机站点较多的时候比较容易出现连接数过多错误,这个时候mysql卡死,可以尝试重启MySQL服务,如果MySQL服务无法重启,只能重启下服务器

可以通过设置最大连接数,连接超时时间,连接断开时间来优化,可以通过如下命令查看

show variables like "max_connections";
show variables like "wait_timeout";
show variables like "interactive_timeout";

max_connections        一般为100,     可以设置为1000或更多
wait_timeout               一般为28800,可以设置为500  或其它
interactive_timeout   一般为28800,可以设置为600  或其它

可以登录MySQL进行设置,但是重启MySQL会丢失设置,如需永久设置,可以修改MySQL配置文件,my.conf 或 my.ini 来达成,添加如下到配置文件,重启MySQL

max_connections=1000
wait_timeout=500
interactive_timeout=600

PHP测试MySQL数据库连接是否正常

$db_host = "数据库地址";
$db_user = "数据库用户名";
$db_pwd = "数据库密码";
$db_name = "数据库名";
$db_prefix = "数据库表前缀";
$link = @mysql_connect($db_host, $db_user, $db_pwd);
if(!$link){
exit("mysql connect failed");
}
else{
echo "mysql connect success";
}
if(!mysql_select_db($db_name, $link)){
exit("database ".$db_name." connct failed");
}
else{
echo "database ".$db_name." connect success";
}
$sql = "Select * from 某个表";
$result = mysql_query($sql);
echo $result;
while($row = mysql_fetch_row($result))
print_r($row);

批处理获取数据库为空的数据库名

通过脚本实现批量获取数据库表为空的数据库,

流程:

获取所有数据库名

show databases;

获取数据库中表的数量

SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES GROUP BY table_schema;

然后,对比两个文件提取出数据库表的数量为0的数据库名

方法一

findstr %%i databases-real.txt || echo %%i >>null-databases.txt

方法二

findstr %%i databases-real.txt > tmp
for %%a in ("tmp") do (
if "%%~za" equ "0" (
echo %%i >> null-databases.txt
))

完整脚本实现如下,暂时提供Windows下面的批处理脚本,Linux下面的也类似

文件,下载get-null-databasename

 

关闭mysql日志

修改/etc/my.cnf 文件,找到

log-bin=mysql-bin
binlog_format=mixed

使用#进行注释,如下

#log-bin=mysql-bin
#binlog_format=mixed

重启mysql

mysql restart

删除mysql日志文件

  • 使用mysql命令删除

查看有哪些日志文件

show binary logs;

查看正在使用的日志文件,名称类似mysql-bin.0000x

show master status;

删除除了mysql-bin.0000x日志文件以外的日志文件

purge binary logs to 'mysql-bin.0000x';

以上三条命令可以删除不用的二进制文件,下面这个命令慎用

删除index文件中列出的所有二进制日志文件,将index文件清空,并创建一个新的二进制日志文件,

reset master;

reset slave;

注意:

reset master删除index文件中列出的所有二进制日志文件,将index文件清空,并创建一个新的二进制日志文件。
使用这个命令要很小心,以免丢失二进制日志文件数据。
reset master也会清空gtid_purged系统变量的值,也会清空系统变量gtid_executed在global上的值(session级别不会清空)。
在5.7.5之后,也会清空mysql.gtid_executed表的值。

reset masterpurge binary logs的不同点:
1.reset master移除index文件中列出的所有的二进制日志文件,并创建一个新的空日志文件,从.000001重新开始。purge binary logs不会将日志从.00001重新开始。
2.reset master不要在slave还在运行的时候执行。purge binary logs命令可以在slave还在运行的时候执行。

reset master这个命令会锁住所有对象,并阻塞数据库连接。如果二进制日志文件较多,reset master操作可能会占用很多时间。
Ctrl+C是无法中断操作的。一旦执行,就只好等待操作结束,abort可能会造成很多未知影响。如果只是想清除部分数据,使用purge命令就行

  • 设置mysql定时清理日志文件,

mysql的配置文件my.cnf设置expire_logs_days=7,  重启mysql配置仍在

 set global expire_logs_days = 7;  通过mysql命令执行,重启后配置会重置0

 

Mysql启动失败 提示 error i/o error reading the header from the binary log

宝塔mysql启动不了,
进入mysql的data目录,宝塔安装路径,Windows如果有两个盘,一般在D:/btsoft/mysql/data,Linux一般在/www/btpanel/mysql/data
查看后缀为.err的错误日志文件,发现提示

error i/o error reading the header from the binary log
Can't init tc log

Could not open log file. xxxx-bin.000xxxx

出现这个情况一般是因为手动删除了日志文件导致,

解决办法,

打开数据库数据目录下,也就是同目录下的xxx-bin.index,然后把里面提示错误的对应的行删除,就可以启动MySQL了

MariaDB安装wordpress

1、创建用户


create user wordpress@localhost identified by '123456';


2、创建数据库


create database wordpress;


3、赋予用户数据库权限


grant all on wordpress.* to 'wordpress'@'localhost' with grant option;


4、安装


wp-content 给予 写入权限,上传图片写入此目录