MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎。
MariaDB直到5.5版本,均依照MySQL的版本。因此,使用MariaDB5.5的人会从MySQL 5.5中了解到MariaDB的所有功能。
从2012年11月12日起发布的10.0.0版开始,不再依照MySQL的版号。10.0.x版以5.5版为基础,加上移植自MySQL 5.6版的功能和自行开发的新功能。
MariaDB虽然被视为MySQL数据库的替代品,但它在扩展功能、存储引擎以及一些新的功能改进方面都强过MySQL。而且从MySQL迁移到MariaDB也是非常简单的:
也就是说,在大多数情况下,你完全可以卸载MySQL然后安装MariaDB,然后就可以像之前一样正常的运行。
安装完成后,root密码默认为空,因此需要进行配置安全控制程序。
在配置前需要先启动mariadb
使用 mysql_secure_installation 启动安全配置程序,输入当前 root 密码,因为当前密码为空,直接回车
是否设置 root 密码,这里输入 y 表示设置密码,输入2次密码,显示 success 为成功
是否删除匿名用户,选择删除
是否禁止 root 用户远程登录数据库,设置为是
是否删除test数据库,这里为了后面测试选择不删除
是否重载授权表,选择是
配置完成,下面使用 mysql 命令登录数据库
输入 help 可以得到帮助
使用 show databases; 可以查看所有数据库
使用 use 数据库名称; 进入数据库
使用 show tables; 查看表列表
使用 desc 表名称; 查看表结构
使用 select version(); 查看版本信息
输入 quit 或者 exit 退出数据库,使用 mysqladmin -u root -p version 也可以查看版本信息
数据库的日常操作不外乎增、改、删、查,下面我们一 一实践
命令成功完成后需要刷新权限
查看表格创建过程
在 mylist 表中插入一条信息
更改表名称
删除表内数据
更改表里的内容
增加表里的条目
删除表里的条目
更改表里的列名
更改列数据类型
mysqldump -u root -p --all-databases > /Your_backup_PWD/all_dbs.sql 备份所有数据库
同时备份多个库
mysqldump -h192.168.10.2 -uroot -ppassword --databases mydata mysql > /Your_backup_PWD/db_mydata_mysql.sql
备份同个库多个表
mysqldump -h主机名 -u用户名 -p密码 --database 数据库名 表1 表2 .... > 文件名.sql
mysqldump -h192.168.10.2 -uroot -ppassword mydata mylist mylist1 > /Your_backup_PWD/mydata_mylist_mylist1.sql
备份数据库结构,不备份数据
mysqldump --opt -d 数据库名 -u用户名 -p密码 > 文件名.sql
-d只导出结构 -t只导出数据
mysqldump --opt -d mydata > /Your_backup_PWD/structure.sql
压缩备份
重新启动mariadb 查看 /data 目录是否有bin-log文件
使用 mysqlbinlog 命令可以查看 bin-log 文件
首先在主数据库端编辑 /etc/my.cnf
- [mysqld]
- log-bin=/data/mysql-bin
- server-id=1
- binlog-ignore-db=mysql
- binlog-ignore-db=information_schema
- binlog-ignore-db=performance_schema
- binlog-ignore-db=test
- innodb_flush_log_at_trx_commit=1
- binlog-do-db=database_name
- replicate-do-db=database_name
- lower_case_table_names=1
create user 'mycat'@'192.168.2.%' identified by 'MyCat@123456';
grant all on *.* to 'mycat'@'192.168.2.%';
select user,host,plugin,authentication_string from mysql.user;然后在从服务器配置 /etc/my.cnf
- log-bin=/data/mysql/mysql-bin
- server-id=2
- relay-log-index=/data/mysql/slave-relay-bin.index
- relay-log=/data/mysql/slave-relay-bin
导入主数据库备份文件
在主数据库端添加一些数据,观测从数据库是否同步
保存重启 mairadb 服务,登录后进行以下操作
保存重启 mairadb 服务,登录后进行以下操作
plugin-load=rpl_semi_sync_master=semisync_master.so 启用半同步插件
rpl_semi_sync_master_enabled=1 启用半同步复制
即在主从数据库的my.cnf配置文件中都要添加:
plugin-load="
rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl-semi-
sync
-master-enabled=1
rpl-semi-
sync
-slave-enabled=1
在从服务器端编辑 /etc/my.cnf 配置文件,添加以下内容
plugin-load=rpl_semi_sync_slave=semisync_slave.so
rpl_semi_sync_slave_enabled=1
show status like
'Rpl_semi_sync_master_status';
show status like
'Rpl_semi_sync_slave_status'
;
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-bin=/data/mariadb/master-log
server-id=2
binlog_format=mixed
log-slave-updates=1
relay-log=/data/mariadb/slave-log
auto_increment_offset=2
auto_increment_increment=2
max_binlog_size=100m
binlog_cache_size=4m
max_binlog_cache_size=512m
binlog-ignore-db=mysql
innodb_flush_log_at_trx_commit=1
plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl-semi-sync-master-enabled=1
rpl-semi-sync-slave-enabled=1
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-bin=/data/mariadb/master-log
server-id=3
binlog_format=mixed
log-slave-updates=1
relay-log=/data/mariadb/slave-log
auto_increment_offset=3
auto_increment_increment=2
max_binlog_size=100m
binlog_cache_size=4m
max_binlog_cache_size=512m
binlog-ignore-db=mysql
innodb_flush_log_at_trx_commit=1
plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
rpl-semi-sync-master-enabled=1
rpl-semi-sync-slave-enabled=1
============================================================================================================
rm -rf /etc/my.cnf
rm -rf /var/lib/mysql/*
chown -R mysql. /var/lib/mysql
忘记 mysql root 密码
1、编辑文件:vim /etc/my.cnf
2、在 [mysqld] 字段下面,按i键编辑;添加skip-grant-tables;按esc键,输入:wq保存退出
3、重启mysql:sudo service mysqld restart
第二步免密码登录mysql
1、登录:mysql -u root -p
2、提示输入密码按回车进入
3、进入数据库,输入:flush privileges;
use mysql;
4、查看root用户信息:select host,user,authentication_string,plugin from user;
5、更新root用户信息,把密码设置为空字符串:update user set authentication_string='' where user='root';
第三步、退出mysql;注释掉/etc/my.cnf文件最后的 skip-grant-tables ;重启:sudo service mysqld restart 或者 systemctl restart mysqld
第四步:设置密码
1、重新开启一个客户端;
2、登录mysql(这时候还是不用输入密码,因为上面已经把密码设置为空字符串了);
3、修改root用户密码:ALTER user 'root'@'%' IDENTIFIED BY 'root123ROOT';
flush privileges;
4、mysql8.0以上密码策略限制必须要大小写加数字特殊符号。退出mysql后就可以用密码登录了
update user set host = "%" where user = "root";
select user,host,authentication_string from user;
alter user 'root'@'%' IDENTIFIED BY 'MIMA';[root@mysql1 ~] vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
binlog-ignore-db=mysql
log-bin=mysql-bin-master
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
server-id=12
relay-log=slave-log
binlog_format= ROW
auto_increment_offset=1
auto_increment_increment=2
log-slave-updates=1
innodb_flush_log_at_trx_commit=2
max_binlog_size = 100m
max_binlog_cache_size = 512m
max_connections = 3000
max_connect_errors = 3000
table_open_cache = 2048
max_allowed_packet = 16M
binlog_cache_size = 16M
max_heap_table_size = 16M
tmp_table_size = 256M
read_buffer_size = 1024M
read_rnd_buffer_size = 1024M
sort_buffer_size = 1024M
join_buffer_size = 1024M
key_buffer_size = 8M
thread_cache_size = 8
query_cache_type = on
query_cache_size = 512M
query_cache_limit = 1024M
ft_min_word_len = 4
long_query_time = 1
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
validate-password=OFF
lower_case_table_names=1
[mysql]
default-character-set = utf8mb4
[client]
default-character-set = utf8mb4
[root@mysql2 ~] vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
binlog-ignore-db=mysql
log-bin=mysql-bin-master
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
server-id=13
relay-log=slave-log
binlog_format= ROW
auto_increment_offset=2
auto_increment_increment=2
log-slave-updates=1
innodb_flush_log_at_trx_commit=2
max_binlog_size = 100m
max_binlog_cache_size = 512m
max_connections = 3000
max_connect_errors = 3000
table_open_cache = 2048
max_allowed_packet = 16M
binlog_cache_size = 16M
max_heap_table_size = 16M
tmp_table_size = 256M
read_buffer_size = 1024M
read_rnd_buffer_size = 1024M
sort_buffer_size = 1024M
join_buffer_size = 1024M
key_buffer_size = 8M
thread_cache_size = 8
query_cache_type = on
query_cache_size = 512M
query_cache_limit = 1024M
ft_min_word_len = 4
long_query_time = 1
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
validate-password=OFF
lower_case_table_names=1
[mysql]
default-character-set = utf8mb4
[client]
default-character-set = utf8mb4
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!