文章目录
Ubuntu 安装 MySQL
卸载系统自带的mysql
停止所有 MySQL 服务:
service mysql stop
检查所有已安装的 MySQL 软件包:
dpkg --list | grep mysql
卸载 MySQL 服务器软件包及其相关的依赖项:
apt-get remove --purge mysql-server mysql-client mysql-common
删除 MySQL 配置文件和数据:
rm -rf /etc/mysql /var/lib/mysql
清理残留文件和目录:
apt-get autoremove
apt-get autoclean
验证卸载结果:
mysql --version
Windows 安装 MySQL
下载MySQL安装包
下载地址:
https://dev.mysql.com/downloads/mysql/
Windows有两种安装Mysql方式:安装器、压缩包。
这里我们选择压缩包方案安装Mysql。建议使用迅雷下载。
压缩包方式安装MySQL
1、在解压目录里新建my.ini配置文件,写入以下内容:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=C:\Develop\mysql-5.7.28-winx64
# 设置mysql数据库的数据的存放目录
datadir=C:\Develop\mysql-5.7.28-winx64\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
[WinMySQLAdmin]
# 可以不设置
Server=C:\Develop\mysql-5.7.28-winx64\bin\mysqld.exe
2、设置Mysql的环境变量
新增系统变量 MYSQL_HOME=C:\Develop\mysql-5.7.28-winx64
在系统变量Path后面追加 ;%MYSQL_HOME%\bin
3、安装Mysql
在解压目录的\bin下,按住键盘Shift,然后右击鼠标打开命令窗口(使用管理员打开)
执行命令初始化数据库:
mysqld -install
mysqld --initialize --console
mysqld --initialize --console命令,可以得到mysql的初始密码,用mysqld --initialize的目的是初始化data目录。要不然mysql5.7的解压文件夹下面不会出现data文件夹。
比如本文中的初始密码为:osYKm5sVTD,f
启动服务:net start mysql
停止服务:net stop mysql
开始使用mysql,输入命令:mysql -uroot -p,然后输入刚才的初始密码
修改密码
mysql> alter user 'root'@'localhost' identified by '123456';
mysql> flush privileges;
如果再修改密码时出现:ERROR 1396 (HY000): Operation ALTER USER failed for '‘root’'@'‘localhost’'
执行下面的命令来修改:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
输入命令:mysql -uroot -p,然后尝试新密码
查看字符编码:show variables like "char%";
mysql的默认编码是Latin1,不支持中文,应该设置为utf8。
下面截图内容说明数据库编码正确。
MySQL多实例安装
使用安装器是无法安装多实例的,只能手动安装。mysql默认是3306,这里我们安装3380、3381。
1、将上面安装好的mysql文件夹,复制到3380、3381。
2、进入3380\data目录,将所有的log文件删除(注意不是所有文件哦!)
3、打开 my.ini 文件,修改相应配置
4、打开3380\data\auto.cnf文件,修改uuid值
主库和从库需要设置不同,一般修改最后一位即可。
修改最后一位即可。
请注意,主从MySQL下的数据(data)目录下有个文件auto.cnf,文件中定义了uuid,要保证主从数据库实例的 uuid不一样,建议直接删除掉,重启服务后将会重新生成。
5、打开cmd,进入\3380\bin目录,执行如下命令
注意改为自己的服务名
和配置文件路径
。
.\mysqld.exe install MySQL-3380 --defaults-file="C:\Develop\mysql\3380\my.ini"
由于是从主库复制过来的,因此里面的数据完全一致,可使用原来的账号、密码登录。
6、进入系统服务查看
7、如需删除服务执行如下命名即可:
注意改为自己的服务名
。
.\mysqld.exe remove MySQL-3381
8、安装3381重复上面步骤即可。
MySQL主从配置
上面已经安装了3380和3381两个mysql实例,这里我们配置3380为主库(master),3381为从库(slave)。
3380master配置:
#主库和从库需要不一致,配一个唯一的ID编号
server_id=1
#开启二进制日志
log-bin=mysql-bin
#设置需要同步的库,多个库用逗号隔开,如果此项不配置所有库都参与同步
#binlog-do-db=test
#设置不需要同步的库,和上项同理,屏蔽系统库同步
#binlog-ignore-db=mysql,information_schema,performance_schema
3381slave配置:
#主库和从库需要不一致,配一个唯一的ID编号
server_id=2
#开启二进制日志
log-bin=mysql-bin
#设置需要同步的数据库
replicate_wild_do_table=test.%
#屏蔽系统库同步
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%
打开master3380mysql会话:
mysql -uroot -p -h127.0.0.1 -P3380
show master status;
查看master的状态:(记录下File、Position字段值,在改变从库信息时用到)
打开slave3381mysql会话:
mysql -uroot -p -h127.0.0.1 -P3381
show slave status;
查看slave的状态:
可以发现,master的状态下,生成了一个二进制的日志文件,而slave下是空的,所以我们现在就要把主库与从库关联起来。只需要让从库(slave)知道主库(master)的地址就可以了。
首先我们需要在主库(master)中创建一个用户用于与从库同步的用户名和密码(这里我创建一个db_sync
用户,密码为123456
),并给test用户授权,以用于主库操作从库。
在master会话中操作:
create user test;
# grant replication slave on *.* to '从库用户名(db_sync)'@'从库主机地址(127.0.0.1)'identified by '密码(123456)';
grant replication slave on *.* to 'test'@'127.0.0.1'identified by '123456';
flush privileges;
发现在执行刷新权限命令时出现如下问题:
解决方案如下:
use mysql;
drop table if exists mysql.servers;
# 运行表创建脚本
CREATE TABLE `servers` (
`Server_name` char(64) NOT NULL,
`Host` char(64) NOT NULL,`Db` char(64) NOT NULL,
`Username` char(64) NOT NULL,
`Password` char(64) NOT NULL,
`Port` int(4) DEFAULT NULL,
`Socket` char(64) DEFAULT NULL,
`Wrapper` char(64) NOT NULL,
`Owner` char(64) NOT NULL,
PRIMARY KEY (`Server_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='MySQL Foreign Servers table';
最后再次运行flush privileges;
即可恢复正常。
切到从库(slave),把主库与从库联系起来:
master_log_file
:show master status;
中File
字段值。
master_log_post
:show master status;
中Position
的值。
change master to master_host='127.0.0.1',
master_port=3380,
master_user='test',
master_password='123456',
master_log_file='mysql-bin.000001',
master_log_pos=0;
然后执行命令 start slave;
开启主从同步。
查看slave状态,查看是否开启成功:
如下图表示开启成功。
或者执行命令show slave status \G;
也可以查看slave状态:
最后分别重启服务。
MySQL主从配置(参考)
一,新增mysql实例
复制原有mysql如:D:\mysql-5.7.25(作为主库) -> D:\mysql-5.7.25-s1(作为从库),并修改以下从库的my.ini:
然后将从库安装为windows服务,注意配置文件位置:
D:\mysql‐5.7.25‐s1\bin>mysqld install mysqls1 ‐‐defaults‐file="D:\mysql‐5.7.25‐s1\my.ini"
由于从库是从主库复制过来的,因此里面的数据完全一致,可使用原来的账号、密码登录。
二,修改主、从库的配置文件(my.ini),新增内容如下:
请注意,主从MySQL下的数据(data)目录下有个文件auto.cnf,文件中定义了uuid,要保证主从数据库实例的 uuid不一样,建议直接删除掉,重启服务后将会重新生成。
三,授权主从复制专用账号
#切换至主库bin目录,登录主库
mysql ‐h localhost ‐uroot ‐p
#授权主备复制专用账号
GRANT REPLICATION SLAVE ON *.* TO 'db_sync'@'%' IDENTIFIED BY 'db_sync';
#刷新权限
FLUSH PRIVILEGES;
#确认位点 记录下文件名以及位点
show master status;
四,设置从库向主库同步数据、并检查链路
#切换至从库bin目录,登录从库
mysql ‐h localhost ‐P3307 ‐uroot ‐p
#先停止同步
STOP SLAVE;
#修改从库指向到主库,使用上一步记录的文件名以及位点
CHANGE MASTER TO
master_host = 'localhost',
master_user = 'db_sync',
master_password = 'db_sync',
master_log_file = 'mysql‐bin.000002',
master_log_pos = 154;
#启动同步
START SLAVE;
#查看从库状态Slave_IO_Runing和Slave_SQL_Runing都为Yes说明同步成功,如果不为Yes,请检查error_log,然后 排查相关异常。
show slave status\G
#注意 如果之前此备库已有主库指向 需要先执行以下命令清空
STOP SLAVE IO_THREAD FOR CHANNEL '';
reset slave all;