当前位置: 澳门新濠3559 > 数据库 > 正文

复制代码 代码如下,查看是否安装了mysql

时间:2019-12-09 01:06来源:数据库
前言 在之前的博客中,有过几篇都写了关于mysql在linux下的搭建教程,可能以后还会再写,但是又不想重复在写,于是便想单独将此抽出来,单独写成一篇博客,并详细记录一些安装过

前言

在之前的博客中,有过几篇都写了关于mysql在linux下的搭建教程,可能以后还会再写,但是又不想重复在写, 于是便想单独将此抽出来,单独写成一篇博客,并详细记录一些安装过程以及遇到的问题解决办法。顺便也将MySql的主从搭建教程也写在一起,方便以后查阅。

先修改Master(10.1.123.197)的 my.cnf 配置

MySql双机热备份方法,mysql双机热备份

MySql双机热备份方法备份Master数据库mysql到Slave中

 【环境】

操作系统:两台32位Windows7旗舰版

Mysql版本:mysql-5.5.28-win32(低版本mysql在配置副库时有所区别)

工具:mysql-gui-tools-5.0-r17-win32

Master IP:192.168.1.4(主)

Slave IP:192.168.1.15(副)

 

MySQL安装路径:D:Program FilesMySQLMySQL Server 5.5

 

【设置】

分别另外添加用户:用户名:mysql,密码:mysql (grant all on *.* to ' mysql '@'%' identified by ' mysql ';);并将mysql数据库内的表user中的host列下的值改为%(或者设置为允许远程访问的主机的IP)

复制代码 代码如下,查看是否安装了mysql。 

在master(192.168.1.4)上测试slave(192.168.1.15) mysql用户是否可以远程登录,以及在slave (192.168.1.15)上测试master (192.168.1.4) mysql用户是否可以远程登录,如果不能正常登录,需查看数据库mysql数据库内user表内用户信息是否正确.(如果不能登录,也可能是防火墙问题导致)

 

【配置】

找到安装路径下的my.ini配置,并分别[mysqld]下添加以下内容:

  • Master配置:

[mysqld]

server-id=1

log-bin=bin_log

binlog-do-db=mysql(需备份的数据库名称)

 

重启master上的mysql服务,点击图片 1,输入密码进入,

输入show master status命令后得

图片 2

记录下File、Position对应的值;

 

  • Slave配置:

[mysqld]

server-id=2

启动slave上mysql服务,点击进入,在命令行输入root用户密码后

图片 3

再输入命令:

change master to master_host='192.168.1.4', master_user='mysql', master_password='mysql’, master_log_file='bin_log.000001', master_log_pos=395;(此处的master_log_file、master_log_pos必须与主库信息相同)

输入:slave start启动;

输入:show slave status

 图片 4

当图中画线部分为“YES”时,表示主从同步正常。

 

经测试:在主库内创建、添加数据,副库可正常进行备份。

MySql 双机热备份方法 ( 备份 Master 数据库mysql 到Slave 中 ) 【环境】 操作系统:两台32位Windows7旗舰版...

因公司需求,需在Docker环境下配置Mysql主从服务器,但是在网上并没有找到一篇完整的技术博客。所以自己研究了下,写一篇博客给大家。此文档本人原创,转载请注明作者和出处。

一、MySql安装

在安装MySql之前,查看是否以及安装过MySql,如果已经安装,但是不符合要求的话就卸载。
1,查找以前是否装有mysql
先输入:

rpm -qa|grep -i mysql

查看是否安装了mysql
图片 5

2,停止mysql服务、删除之前安装的mysql
输入:

ps -ef|grep mysql

删除命令
输入:

rpm -e –nodeps 包名

图片 6
如果提示依赖包错误,则使用以下命令尝试

rpm -ev 包名 --nodeps

如果提示错误:error: %preun(xxxxxx) scriptlet failed, exit status 1
则用以下命令尝试:

rpm -e --noscripts 包名

3、查找并删除mysql目录
查找结果如下:

find / -name mysql

删除对应的mysql目录
具体的步骤如图:查找目录并删除
图片 7
注意:卸载后/etc/my.cnf不会删除,需要进行手工删除

4、再次查找机器是否安装mysql

rpm -qa|grep -i mysql

图片 8

Mysql有两种安装模式,可自行选择。

在 [mysqld] 中新增以下内容:

总体步骤:

1,yum安装

首先查看mysql 是否已经安装
输入:

rpm -qa | grep mysql   

如果已经安装,想删除的话
输入:
普通删除命令:

rpm -e mysql

强力删除命令:

rpm -e --nodeps mysql    

依赖文件也会删除

安装mysql
输入:

yum list mysql-server  

如果没有,则通过wget命令下载该包
输入:

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm   

下载成功之后,再输入命令安装

yum install mysql-server

在安装过程中遇到选择输入y就行了
图片 9
图片 10

安装成功后,输入 service mysqld start 启动服务
输入:
mysqladmin -u root -p password '123456'
来设置密码
输入之后直接回车(默认是没有密码的)
然后再输入
mysql -u root -p
图片 11
通过授权法更改远程连接权限
输入: grant all privileges on . to 'root'@'%' identified by '123456';
注:第一个’root’是用户名,第二个’%’是所有的ip都可以远程访问,第三个’123456’表示 用户密码 如果不常用 就关闭掉
输入:flush privileges; //刷新

在防火墙关闭之后,使用SQLYog之类的工具测试是否能正确连接

图片 12

复制代码 代码如下:

一  搭建Docker环境,下载mysql镜像,本文以5.7.13为例。

2,编译包安装

log-bin=mysql-bin
log-bin-index=mysql-bin.index
server-id = 1
sync_binlog=1
binlog_format=mixed

二  使用Dockerfile构建自己的镜像,因为主从服务器的my.cnf不同,所以建议构建两个镜像,构建镜像的同时copy my.cnf文件到镜像。

Mysql文件准备

将下载好的mysql安装包上传到linux服务器
解压mysql解压包,并移动到/usr/local目录下,重命名为mysql。
命令:

tar -xvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.6.21-linux-glibc2.5-x86_64 /usr/local
cd /usr/local
mv mysql-5.6.21-linux-glibc2.5-x86_64 mysql

图片 13

注: mysql默认的路径是就是/usr/local/mysql ,如果安装的地方更改,需要更改相应的配置文件。

然后指定要做同步的数据库,并忽略掉不需要做同步的数据库

三  通过build和run构建并运行主从镜像。

安装mysql

切换到mysql的目录 /usr/local/mysql
输入:

 ./scripts/mysql_install_db --user=mysql

图片 14
成功安装mysql之后,输入
service mysql start 或 /etc/init.d/mysql start

图片 15
查看是否启动成功
输入:

 ps -ef|grep mysql

切换到 /usr/local/mysql/bin 目录下
设置密码
mysqladmin -u root password '123456'入mysql
输入:

mysql -u root -p

设置远程连接权限
输入:

grant all privileges on *.* to 'root'@'%' identified by '123456'; 

然后输入:

flush privileges;

说明: 第一个’root’是用户名,第二个’%’是所有的ip都可以远程访问,第三个’123456’表示用户密码 如果不常用就关闭掉。

使用本地连接工具连接测试

图片 16

复制代码 代码如下:

四  分别进入主从Mysql容器,修改配置。

二、MySql搭建遇到的错误解决办法

binlog-do-db = testdb
binlog-ignore-db = mysql
binlog-ignore-db = performance_schema
binlog-ignore-db = information_schema

五  搞完收工。

1,mysql离线安装出现:Can't change to run as user 'mysql' ; Please check that the user exists!

原因:没有该用户。
解决办法:创建该用户!
例如:
添加用户:

groupadd -g 315 mysql

用户加入mysql:

useradd -u 315 -g mysql -d /usr/local/mysql -M mysql

再次输入

 ./scripts/mysql_install_db --user=mysql

成功!
图片 17

在 [mysqldump] 中修改内容为    

1下载mysql镜像源。

2,安装完mysql之后,输入service mysql start 提示 mysql: unrecognized service。

问题原因: 是因为/etc/init.d/ 不存在 mysql 这个命令,所以无法识别。
解决办法:
1.首先查找mysql.server文件在哪
输入:

find  /  -name mysql.server

2.将mysql.server 复制到/etc/init.d/目录下,并重命名为mysql或mysqld

输入:

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

3.测试是否可以使用该命令
输入:

service mysql status

service mysqld status

图片 18

复制代码 代码如下:

使用命令(二选一):

3,mysql数据导入报错

错误:Got a packet bigger than‘max_allowed_packet’bytes的问题

2个解决方法:

1.临时修改:mysql>set global max_allowed_packet=524288000;修改 #512M

2.永久修改: 编辑my.cnf, 在 [MySQLd] 部分添加一句(如果存在,调整其值就可以):
max_allowed_packet=10M

成功之后重启mysql。

max_allowed_packet = 32M

地址一:docker pull daocloud.io/library/mysql:5.7.13

4,mysql数据库关于max_allowed_packet的问题

主要是mysql的JDBC连接限制了最大包长度1024B,即1KB
查询当前数据库的包长度显示: show VARIABLES like '%max_allowed_packet%';
修改此参数
解决方案一(临时): 进入msyql
输入:
set global max_allowed_packet = 2*1024*10
更改最大值

解决方案二(永久):修改mysql.cnf(windows下my.ini),在[mysqld]段或者mysql的server配置段 进行修改。

max_allowed_packet = 20K。

修改成功后,重启mysql。

注意:确保 max_allowed_packet 有比较大的值,比如 max_allowed_packet = 100M

地址二:docker pull daocloud.io/mysql(测试可用)

三、MySql 用到的一些命令

重启 mysql:

镜像下载好之后,接下来需要使用Dockerfile通过copy my.cnf文件来构建符合自己要求的镜像。因为主从服务器my.cnf配置略有不同,所以我们选择构建两个镜像,分别命名为mysql-master和mysql-slave。

1.查看mysql连接数

  SHOW FULL PROCESSLIST;

复制代码 代码如下:

2使用Dockerfile构建镜像并创建容器

2.查看mysql的配置

show variables like "%innodb%";

service mysql restart

创建两个目录,mkdir master和mkdir slave。然后分别cd到两个目录里面使用touch Dockerfile命令创建Dockerfile。将以下内容写入Dockerfile:

3.查看mysql事件是否开启

show variables like 'event_scheduler';

在Master上创建一个复制用户

FROM mysql

4.查看mysql锁的状态

是否锁表:

 SHOW OPEN TABLES WHERE In_use > 0;

SHOW INNODB STATUS/G;

复制代码 代码如下:

COPY my.cnf /etc/mysql/

5.查看mysql data的存放位置

SHOW VARIABLES LIKE '%datadir%'

CREATE USER funsion;
GRANT REPLICATION SLAVE ON *.* TO funsion IDENTIFIED BY 'jb51.net';
# 测试环境密码是  xyzzy

EXPOSE 3306

6.查看mysql 的超时时间设置

show variables like '%timeout%';

+ ---------------------------------------------------------- +

CMD ["mysqld"]

四、MySql修改密码

再修改 Slave(10.1.123.160)的配置,修改 my.cnf

备注:my.cnf文件可以先装一个mysql的测试版本,然后切换到/etc/mysql目录下,使用COPY my.cnf /etc/mysql/conf.d/my.cnf到当前目录,这样就得到了基础的配置文件。然后将得到的my.cnf文件分别copy到master和slave目录下。并做以下修改:

1,知道原来的myql数据库的root密码;

在 [mysqld] 中新增以下内容

master文件夹下的my.cnf文件

在终端命令行修改

输入

 mysqladmin -u root -p password "新密码"

回车

 Enter password: 【输入原来的旧密码】

复制代码 代码如下:

[mysqld]

登录mysql系统修改

进入mysql
输入:

 mysql -uroot -p 回车 Enter password: 【输入原来的密码】

进入之后
输入:

use mysql;
update user set password=password("新密码") where user='root';
flush privileges;

然后使用刚才输入的新密码即可登录。

server-id=2
log-bin = mysql-bin
relay-log-index = slave-relay-bin.index
relay-log = slave-relay-bin

log-bin=mysql-bin   //[必须]启用二进制日志

2,不知道原来的myql的root的密码;

首先,你必须要有操作系统的root权限了。要是连系统的root权限都没有的话,先考虑root系统再走下面的步骤。 类似于安全模式登录系统。
需要先停止mysql服务

service mysql stop

/etc/init.d/mysql stop

注:如果mysql不行,就用mysqld
当提示mysql已停止后进行下一步操作

在终端命令行输入:

mysqld_safe --skip-grant-tables &  

输入mysql登录mysql系统

use mysql;
UPDATE user SET password=password("新密码") WHERE user='root';      
flush privileges;
exit;

重新启动mysql服务
这样新的root密码就设置成功了。

sync_master_info = 1
sync_relay_log = 1
sync_relay_log_info = 1

server-id=1//[必须]服务器唯一ID,默认是1,一般取IP最后一段,这里看情况分配

五、MySql主从搭建

主从搭建参考:

说明:搭建MySql的主从时,如复制名称出现了错误,那么尝试使用用手动输入命令。

# 以上三行话只使用于MySQL 5.5

slave文件夹下的my.cnf文件

1,事前准备

信息
操作系统:CentOS6.8
Mysql:5.6
IP:192.169.2.156 (主),192.169.2.98(从)

确保MySql已经成功安装 !

输入 mysql -u root -p
进入mysql命令行,输入

[mysqld]

2,配置更改

更改mysql中的my.cnf文件
添加如下:
主(Master):

#任意自然数n,只要保证两台MySQL主机不重复就可以了。
server-id=1
#开启二进制日志
log-bin=mysql-bin  
#步进值auto_imcrement。一般有n台主MySQL就填n 
auto_increment_increment=2
#起始值。一般填第n台主MySQL。此时为第一台主MySQL   
 auto_increment_offset=1 
#忽略指定的数据库 
binlog-ignore=mysql   
binlog-ignore=information_schema  
#要同步的数据库(多个可以使用逗号隔开),默认所有库
replicate-do-db=DBTEST  

从(Slave):

server-id=2
log-bin=mysql-bin
auto_increment_increment=2
auto_increment_offset=2
replicate-do-db=DBTEST 

更改完配置之后重启!

复制代码 代码如下:

log-bin=mysql-bin   //[必须]启用二进制日志

3,主从配置

主(Master)
master新建slave用户
进入MySql之后输入:

grant replication slave on *.* to 'slave_account'@'192.169.2.98' identified by '123456'; 

说明: 设置一个slave_account用户拥有REPLICATION SLAVE权限,可以访问的ip为192.169.2.98,并设置密码为123456。
如果想某个网段的服务器都能登录,可以使用192.168.2.% 。表示192.168.2.0-192.168.2.255的Server都可以用slave_account用户登陆主服务器。
如果想所有的服务器都能登录,那么可以设置为 % 。

然后输入:

flush privileges;

查看信息,并记录下文件名称和分区ID

SHOW MASTER STATUS;

图片 19

从(Slave):
获取master的授权信息之后,输入slave的授权命令:

change master to master_host='192.169.2.156',master_user='slave_account',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=427;

确保成功执行!

CHANGE MASTER TO MASTER_HOST = '10.1.123.233', MASTER_USER = 'funsion', MASTER_PORT = 3306, MASTER_PASSWORD = 'ifunsion.com';

server-id=2//[必须]服务器唯一ID,默认是1,一般取IP最后一段,这里看情况分配

4,主从测试

从(Slave):
开始主从复制:
输入:

START SLAVE;

查看主从复制是否配置成功:

SHOW SLAVE STATUSG

图片 20

说明:当看到Slave_IO_Running: YES、Slave_SQL_Running: YES 说明成功,否则失败。

主(Master)
首先创建一个DBTEST数据库,然后创建test表,并插入两条数据。
这里为了看起来更加明朗,我是用的是SQLYog 工具进行操作的。
进入mysql执行如下脚本:

CREATE DATABASE`DBTEST`;
USE `DBTEST`;
CREATE TABLE `test` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(16) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

insert  into `test`(`id`,`name`) values (1,'张三'),(2,'李四');

查看
输入:

select * from test;

图片 21

从(Slave):
查看
输入:

select * from test;

图片 22

从数据库并没有执行脚本,但是信息一致,说明成功同步了。

继续测试,在主(master)删除一条数据,查看从的数据。
主(Master)
图片 23

从(Slave):
图片 24

可以看到已经完全同步了!

那么本篇教程就到此结束了,谢谢阅读!

CHANGE MASTER TO MASTER_CONNECT_RETRY=30;

以上已经完成了构建镜像的准备工作,下面开始正式工作。

在输入 START SLAVE;

切换到master目录下构建master/mysql镜像

+ ----------------------- 如果发生错误无法启动 ------------------- +

命令:docker build -t master/mysql .

进入Master 的数据库
输入 show master statusG
记录下当前使用的 log-bin文件,以及position (比如现在日志是 mysql-bin.000001 ,位置是 107)

(命令最后有个.,不要忘记,代表当前目录)

然后进入Slave 的数据库
输入 stop slave;

然后切换到master目录下构建slave/mysql镜像

复制代码 代码如下:

命令:docker build -t slave/mysql .

change master to master_log_file='mysql-bin.000001',master_log_pos=107;

(命令最后有个.,不要忘记,代表当前目录)

最后输入  start slave;

镜像构建成功,下一步开始运行。

最后在服务器上执行

docker run -p 3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=mysql -d master/mysql

复制代码 代码如下:

语法:-p 3306是将3306端口映射出来,也可以使用*****:3306指定映射之后的端口,mysql-master为容器的名称,mysql为指定密码,master/mysql为镜像源,下同。

yum -y install ntpdate
ntpdate cn.pool.ntp.org
clock -w

docker run -p 3306 --name slave-master -e MYSQL_ROOT_PASSWORD=mysql -d slave/mysql

把几台服务器的时间同步

从这里开始,建议打开两个终端窗口,方便操作。

+ ---------------------------- 一些可能用到的命令 ------------------------- +

然后分别执行docker exec -it mysql-master bash和docker exec -it slave-master bash命令进入到容器内部。然后分别执行mysql -uroot -p输入密码mysql进入到mysql环境,正式配置主从连接服务。

执行锁表:

3mysql配置

复制代码 代码如下:

在主容器mysql中输入以下命令:

flush tables with read lock;

mysql>GRANT REPLICATION SLAVE ON *.* TO 'user'@'192.168.99.100' IDENTIFIED BY 'mysql';(指定ip)或者

这一步的目的是使我们在制作主从的过程中,主库中不会有新的数据,否则会给我们的同步设置带来麻烦

mysql>GRANT REPLICATION SLAVE ON *.* to 'user'@'%' identified by 'mysql';(所有ip)

主库执行解锁:

然后查看主容器数据库状态:

复制代码 代码如下:

命令:mysql>show master status

unlock tables;

记录mysql-bin的值和pos的值。下面要用到,到这里为止,主库千万不要再做任何操作,防止状态改变。可以关掉。

reset master 命令删除了所有的二进制日志文件并清空了二进制日志索引文件。
reset slave  命令删除了Slave复制所用的所有文件,重新开始。

然后我们配置一下从库


  • 其它参考文档(未验证)-------------------------- +

命令如下:

库业务不能停的情况下为从库制作镜像:
案例:
服务器1号:主
服务器2号:从
现在由于负载问题需要上架服务器3号同样为1号的从服务器。
但是1号库不能停,2号也不能停,主从同步进程也不能停(要求苛刻)。
可以这样做:
在主:

mysql>change master to

复制代码 代码如下:

master_host='192.168.99.100',//要连接的主服务器的ip

mysqldump -uroot -pxxxx -h127.0.0.1 --databases db1 db2 db3 --master-data=1 > bak.sql

master_user='user',//指定的用户名,最好不要用root

3号服务器slave stop;
之后将bak.sql导入3号从服务器

master_log_file='mysql-bin.000003',//主库记录的值

复制代码 代码如下:

master_log_pos=1201,//主库的pos值

slave start;

master_port=32771,//主库3306映射的端口,如果不知道可以使用docker ps查看

3号服务器会自动从导出的那一刻的节点更新。
因为--master-data=1 这个参数在导出sql文件后会在最下方加上change语句。如果--master-data=0,则不会带有。
非常的方便,但仅适合库不是太大的情况,该案例导出的库一共6G。

master_password='mysql';//当然就是主库要连接的用户的密码了

my.cnf 配置 在 [mysqld] 中新增以下内容: 复制代码 代码如下: log-bin=mysql-bin log-bin-index=mysql-bin.index server-id = 1 sync...

如果一切顺利,那么距离成功还有一步,输入mysql>start slave启动从服务器。

最后,检验一下我们的成果。

mysql>show slave statusG

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.2.222  //主服务器地址

Master_User: mysync   //授权帐户名,尽量避免使用root

Master_Port: 3306    //数据库端口,部分版本没有此行

Connect_Retry: 60

Master_Log_File: mysql-bin.000004

Read_Master_Log_Pos: 600     //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos

Relay_Log_File: ddte-relay-bin.000003

Relay_Log_Pos: 251

Relay_Master_Log_File: mysql-bin.000004

Slave_IO_Running: Yes    //此状态必须YES

Slave_SQL_Running: Yes     //此状态必须YES

注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

以上操作过程,主从服务器配置完成。

编辑:数据库 本文来源:复制代码 代码如下,查看是否安装了mysql

关键词: