mysql概述
MysQL是一个关系型数据犀管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。
MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
Mysq是开源的,所以你不需要支付额外的费用。Mysql支持大型的数据库。可以处理拥有上千万条记录的大型数据库。MysQL使用标准的SQL数据语言形式。
Mysql可以允许于多个系统上,并且支持多种语言。这些编程语言包括C.C++、Python. Java. Perl. PHP, Eiffel. Ruby和Tc等。
Mysql对PHP有很好的支持, PHP是目前最流行的Web开发语言。MySQL支持大型数据库,支持5000万条记录的数据仓库, 32位系统表文件最大可支持4GB, 64位系统支持最大的表文件为8TB.Mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。
高级mysql必备技能
mysql内核
sql优化攻城狮
mysql服务器的优化
各种参数常量设定
查询语句优化
主从复制
软硬件升级
容灾备份
sql编程
完整的mysql需要很深的功底
下载地址
https://downloads.mysql.com/archives/community/
mysql5.7
我选择的是5.7.30
上图显示第一个是二进制源码包,第二个是二进制测试包,第三个是源码包。我们选择第一个
二进制版本的mysql是已经编译好的,无需 configure ,make make install 等步骤,只需配置一下即可使用,卸载也方便,直接删除即可。可以自行调整编译参数,最大化地定制安装结果。
下载之后,通过上传的方式上传到你服务器指定的目录即可
检查当前系统是否安装过mysql
rpm -qa | grep -i mysql
把软件应该放到opt目录下 为了省事我还是放到了usr/local目录下 解压 并改名方便后续操作
tar -xvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.30-linux-glibc2.12-x86_64 mysql-5.7.30
或者使用mysqladmin --version
有的话代表安装成功
查看用户和组
cat /etc/passwd | grep mysql
cat /etc/group | grep mysql
没有则添加用户组和用户
groupadd mysql
useradd -r -g mysql mysql
创建mysq数据目录
回到根目录
赋予权限
chown mysql:mysql -R /data/mysql
开始配置参数
vim /etc/my.cnf
然后 按 i 进入编辑模式,把下面内容复制进去
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql-5.7.30
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
保存完退出进入下一步 初始化mysql
cd /usr/local/mysql-5.7.30/bin/
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql-5.7.30/ --datadir=/data/mysql/ --user=mysql --initialize
启动mysql服务 ./mysql.server start
然后 查看初始密码,复制出来0
vim /data/mysql/mysql.err
连接mysql
mysql -u root -p
如果出现这个错误需要将配置文件生成的mysql.sock 移动到/var/lib/mysql 目录下再次启动就可以
安装成功之后需要修改密码
执行以下命令
SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;
ok成功了
主从复制
原理
原则
每个slave只有一个master
每个slave只能有一个唯一的服务器id
每个master可以有多个salve
复制的最大问题
网络延时
一主一从常见配置
mysql版本一致且后台以服务运行
主从配置都配置在【mysqld】下,都是小写
修改my.cnf配置文件
主机修改my.cnf配置文件
server-id 主服务器唯一标识,log_bin 启动MySQL二进制日志,binlog_do_db 指定记录二进制日志的数据库,binlog_ignore_db 指定不记录二进制日志的数据库。
server-id = 1 #服务器唯一标识
log_bin = master-bin #启动MySQL二进制日志
log_bin_index = master-bin.index
#binlog_do_db = test #指定记录二进制日志的数据库
#binlog_ignore_db = mysql 指定不记录二进制日志的数据库
从机修改my.cnf配置文件
server-id = 2
relay-log = slave-relay-bin
relay-log-index = slave-relay-bin.index
重启mysql
./mysql.server restart
进入下一步 在主机上建立账户并授权slave 让从机以什么账号什么密码来抄主机的数据
使用主机登录mysql 执行
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Root_Pass1' WITH GRANT OPTION;
然后
show master status;
将这三个值记录下来
执行完之后不要在操作主服务mysql,防止主服务器状态值发生变化
在linux上从机配置需要复制的主机
change master to master_host='47.102.204.72', master_port=3306, master_user='mysql', master_password='123456', master_log_file='master-bin.00001', master_log_pos=154;
flush privileges;
如果之前做过同步请先停止
stop slave;
start slave; 启动从机配置
show s'lave status\G; 都为yes则配置成功 ,否则有可能是serverid 相同导致 需要更改下并重启服务 mysql
说明配置成功了开始主从测试
如果有no请看我这篇文章
https://blog.youkuaiyun.com/qq_44658169/article/details/119971751
建库建表插入数据
主机建库test
从机选择test库
主机建表
从机查testa表
主机插入数据
从机查询
主从配置成功