在一台机器上,怎么安装多个mysql数据库,怎样开启多个mysql服务,。在线等,

在一台机器上,怎么安装多个mysql数据库,怎样开启多个mysql服务,。在线等,,第1张

这种架构一般用在以下三类场景

1. 备份多台 Server 的数据到一台如果按照数据切分方向来讲,那就是垂直切分。比如图 2,业务 A、B、C、D 是之前拆分好的业务,现在需要把这些拆分好的业务汇总起来备份,那这种需求也很适用于多源复制架构。实现方法我大概描述下:业务 A、B、C、D 分别位于 4 台 Server,每台 Server 分别有一个数据库来隔离前端的业务数据,那这样,在从库就能把四台业务的数据全部汇总起来,而不需要做额外的 *** 作。那没有多源复制之前,要实现这类需求,只能在汇总机器上搭建多个 MySQL 实例,那这样势必会涉及到跨库关联的问题,不但性能急剧下降,管理多个实例也没有单台来的容易。

2. 用来聚合前端多个 Server 的分片数据。

同样,按照数据切分方向来讲,属于水平切分。比如图 3,按照年份拆分好的数据,要做一个汇总数据展现,那这种架构也非常合适。实现方法稍微复杂些:比如所有 Server 共享同一数据库和表,一般为了开发极端透明,前端配置有分库分表的中间件,比如爱可生的 DBLE。

3. 汇总并合并多个 Server 的数据

第三类和第一种场景类似。不一样的是不仅仅是数据需要汇总到目标端,还得合并这些数据,这就比第一种来的相对复杂些。比如图 4,那这样的需求,是不是也适合多源复制呢?答案是 YES。那具体怎么做呢?

1、情况一:MySQL的错误日志文件(安装目录\MYOA\data5\机器名.err)会记录如下内容:

InnoDB: Reading tablespace information from the .ibd files...

InnoDB: Error: trying to add tablespace 460 of name '.\td_oa\flow_data_35.ibd'

InnoDB: to the tablespace memory cache, but tablespace

InnoDB: 460 of name '.\td_oa\exam_data.ibd' already exists in the tablespace

解决方法:

1)剪切出安装目录\MYOA\data5\TD_OA的flow_data_35.ibd和flow_data_35.frm两个文件;

2)启动MySQL5_OA服务,使用备份的flow_data_35.sql导入到TD_OA库中。如果提示flow_data_35表已经存在不能导入,则继续按后续步骤执行;

3)在data5下手动建立tmp目录;

4)使用MySQL管理工具或MySQL命令行程序在tmp下建立名称为flow_data_35的表(包含一个字段即可);

5)将tmp下的flow_data_35.frm和flow_data_35.ibd拷贝到安装目录\MYOA\data5\TD_OA目录下;

6)在MySQL管理工具或MySQL命令行程序中,进入TD_OA库,使用“drop table flow_data_35”命令清除公共表空间中残留的flow_data_35表的相关信息;

7)进入tmp库,删掉flow_data_35表;

8)使用备份的flow_data_35.sql导入到TD_OA库中;

9)如果还有其他表存在该问题,可重复执行4至8步骤。

2、情况二:MySQL的错误日志文件(安装目录\MYOA\data5\机器名.err)会记录如下内容:

130409 15:54:31 [Note] Plugin 'FEDERATED' is disabled.

130409 15:54:31 InnoDB: The InnoDB memory heap is disabled

130409 15:54:31 InnoDB: Mutexes and rw_locks use Windows interlocked functions

130409 15:54:31 InnoDB: Compressed tables use zlib 1.2.3

130409 15:54:32 InnoDB: Initializing buffer pool, size = 1023.0M

InnoDB: VirtualAlloc(1086849024 bytes) failedWindows error 8

130409 15:54:32 InnoDB: Completed initialization of buffer pool

130409 15:54:32 InnoDB: Fatal error: cannot allocate memory for the buffer pool

130409 15:54:32 [ERROR] Plugin 'InnoDB' init function returned error.

130409 15:54:32 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

130409 15:54:32 [ERROR] Unknown/unsupported storage engine: Innodb

130409 15:54:32 [ERROR] Aborting

解决方法:

此情况出现的原因是myoa\mysql5\my.ini中innodb_buffer_pool_size的值太大,OA服务器 *** 作系统不支持所致。改小后再启动mysql5_OA服务即可,一般保持和数据库大小一致。数据库大小即是myoa/data5的大小。

3、情况三:mysql服务启动不了,事件查看器中显示:The syntax '--log-slow-queries' is deprecated and will be removed in a future release. Please use '--slow-query-log'/'--slow-query-log-file' instead.

解决方法:安装目录\MYOA\data5下的ibdata1、ib_logfile0、ib_logfile1文件属性被设置为只读导致,取消只读控制,重启mysql5_OA服务即可。

4、情况四:MySQL的错误日志文件(data5\机器名.err)会记录如下内容:InnoDB: No valid checkpoint found.

解决方法:此问题找不到检查点,数据库是无效的,此种情况,只能用热备份数据恢复。

5、以上四种情况,是2013版OA系统目前比较常见的mysql服务启动不了的现象和解决办法,大家可作参考,其他情况的话,再具体分析处理。

6、分析思路总结:遇到mysql5_OA服务启动不了的情况,首先查看myoa\data5下的错误日志文件,根据日志中的具体内容进行具体分析。

7、2013版MYSQL服务启动不了(可以尝试强制启动mysql服务)方法如下:

1)打开\MYOA\mysql5\my.ini,去掉innodb_force_recovery=1前边的注释。

2)启动MySQL5_OA服务,此时MySQL处于只读状态,可以导出,不可写入。如果仍不能启动,可以尝试将innodb_force_recovery修改为2、3、4、5、6等,直到可以启动为止。

3)使用MySQL管理工具,将TD_OA等相关的数据库导出为SQL文件。

4)停止MySQL5_OA服务,删除TD_OA下的所有文件、ibdata1、ib_logfile0、ib_logfile1等文件。

5)打开\MYOA\mysql5\my.ini,在innodb_force_recovery=1前边加上#号,将该项注释掉。

6)启动MySQL5_OA服务,然后导入此前备份的SQL文件。

7)检查数据库,将无法通过该方法恢复的数据表,通过之前自动备份的SQL文件进行恢复。

如果不是root密码:

连root的密码也忘记了吗?

没有的话,用root进去,修改mysql数据库user表咯。

如果是root密码:

方法一:

MySQL提供跳过访问控制的命令行参数,通过在命令行以此命令启动MySQL服务器:

safe_mysqld --skip-grant-tables&

即可跳过MySQL的访问控制,任何人都可以在控制台以管理员的身份进入MySQL数据库。

需要注意的是在修改完密码以后要把MySQL服务器停掉重新启动才会生效

方法二:

可以进行如下的步骤重新设置MySQL的root密码:

1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。

因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的

状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对

外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全

状态。最安全的状态是到服务器的Console上面 *** 作,并且拔掉网线。

2.修改MySQL的登录设置:

# vi /etc/my.cnf

在[mysqld]的段中加上一句:skip-grant-tables

例如:

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

skip-name-resolve

skip-grant-tables

保存并且退出vi。

3.重新启动mysqld

# /etc/init.d/mysqld restart

Stopping MySQL: [ OK ]

Starting MySQL: [ OK ]

4.登录并修改MySQL的root密码

# /usr/bin/mysql

Welcome to the MySQL monitor. Commands end with or \g.

Your MySQL connection id is 3 to server version: 3.23.56

Type ‘help’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql>USE mysql

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql>UPDATE user SET Password = password ( ‘new-password’ ) WHERE User = ‘root’

Query OK, 0 rows affected (0.00 sec)

Rows matched: 2 Changed: 0 Warnings: 0

mysql>flush privileges

Query OK, 0 rows affected (0.01 sec)

mysql>quit

Bye

5.将MySQL的登录设置修改回来

# vi /etc/my.cnf

将刚才在[mysqld]的段中加上的skip-grant-tables删除

保存并且退出vi。

6.重新启动mysqld

# /etc/init.d/mysqld restart

Stopping MySQL: [ OK ]

Starting MySQL: [ OK ]

windows

1.以系统管理员身份登陆系统。

2.打开cmd—–net start 查看mysql是否启动。启动的话就停止net stop mysql.

3.我的mysql安装在d:\usr\local\mysql4\bin下。

4.跳过权限检查启动mysql.

d:\usr\local\mysql4\bin\mysqld-nt –skip-grant-tables

5.重新打开cmd。进到d:\usr\local\mysql4\bin下:

d:\usr\local\mysql4\bin\mysqladmin -uroot flush-privileges password “newpassword”

d:\usr\local\mysql4\bin\mysqladmin -u root -p shutdown 这句提示你重新输密码。

6.在cmd里net start mysql

7.搞定了。

2,MySQL4.1以上版本一种密码错误问题的解决方法

1 # SET PASSWORD FOR ’some_user’@’some_host’ = OLD_PASSWORD(‘newpwd’)

2 # FLUSH PRIVILEGES

3,Mysql数据库修复

myisamchk -r -q d:\mysql\data\latin1\*

r代表修复

q代表快速

d:\mysql\data\latin1\*数据库里面 *代表里面的所有的文件

方法三:

如果你忘记了你的MYSQL的root口令的话,你可以通过下面的过程恢复。

1. 向mysqld server 发送kill命令关掉mysqld server(不是 kill -9),存放进程ID的文件通常在MYSQL的数据库所在的目录中。

kill `cat /mysql-data-directory/hostname.pid`

你必须是UNIX的root用户或者是你所运行的SERVER上的同等用户,才能执行这个 *** 作。

2. 使用`--skip-grant-tables' 参数来启动 mysqld。

3. 使用`mysql -h hostname mysql'命令登录到mysqld server ,用grant命令改变口令。你也可以这样做:`mysqladmin -h hostname -u user password 'new password''。

(其实也可以用use mysqlupdate user set password =password('yourpass') where user='root' 来做到。)

4. 载入权限表: `mysqladmin -h hostname flush-privileges' ,或者使用 SQL 命令`FLUSH PRIVILEGES'。(当然,在这里,你也可以重启mysqld。)

方法四:(一定要先备份)

1,重新在另一台电脑上安装相同版本的MySQL

2,删除忘记密码的电脑中MySQL安装目录中\data\mysql的全部内容(要先停止MySQL服务)

3,Copy新装的电脑上MySQL安装目录中\data\mysql的全部内容 to 刚刚删除的目录中

4,启动MySQL服务

这样就只有一个root用户了,密码为空……


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/8611027.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-18
下一篇2023-04-18

发表评论

登录后才能评论

评论列表(0条)

    保存