一、安装MariaDB

1.使用官方源安装marisdb

如果使用阿里云的源,目前的版本号为5.5.64。如果想安装最新的10.x版本,则需要使用MariaDB的官方源。

1)配置官方源:

在/etc/yum.repos.d/下创建MariaDB.repo:

[root@centos-db ~]# cd /etc/yum.repos.d/
[root@centos-db yum.repos.d]# touch MariaDB.repo
[root@centos-db yum.repos.d]# vi MariaDB.repo[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/PRM-GPG-KEY-MariaDB
gpgcheck=1

执行命令:

[root@centos-db yum.repos.d]# yum clean all
[root@centos-db yum.repos.d]# yum makecache

2)安装MariaDB-server和MariaDB-client

配置好MariaDB官方源以后,使用以下命令安装:

[root@centos-db yum.repos.d]# yum install MariaDB-server MariaDB-client

可以看到具体的版本号:

============================================================================================================================================================================================================================================Package                                                         Arch                                           Version                                                               Repository                                       Size
============================================================================================================================================================================================================================================
Installing:MariaDB-client                                                  x86_64                                         10.1.44-1.el7.centos                                                  mariadb                                          10 MMariaDB-server                                                  x86_64                                         10.1.44-1.el7.centos                                                  mariadb                                          24 M

2.使用阿里源安装mariadb

如果官方源速度慢,并且我们对新版本没有特别要求,则可以使用阿里源进行安装。

1)删除官方源的repo文件

[root@centos-db yum.repos.d]# cd /etc/yum.repos.d/
[root@centos-db yum.repos.d]# mv MariaDB.repo MariaDB.repo.bk

2)清理缓存

[root@centos-db yum.repos.d]# yum clean all

3)安装mariadb

[root@centos-db yum.repos.d]# yum install mariadb-server mariadb

注意,使用阿里源安装时,名字和官方的不一样,官方的名字是MariaDB-server、MariaDB-client。而阿里源为mariadb-server、mariadb。注意区分大小写和名称。

3.启动MariaDB

使用官方源或阿里源安装好mariadb后,使用以下命令来管理MariaDB服务:

systemctl status mariadb  # 查看状态
systemctl start mariadb  # 启动
systemctl stop mariadb  # 停止
systemctl restart mariadb  # 重启
systemctl enable mariadb  # 设置开机启动
systemctl disable mariadb  # 取消开机启动

启动mariadb:

[root@centos-db yum.repos.d]# systemctl status mariadb
鈼[0m mariadb.service - MariaDB database serverLoaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)Active: active (running) since Wed 2020-01-29 13:40:59 CST; 2s agoProcess: 1703 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)Process: 1615 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)Main PID: 1702 (mysqld_safe)CGroup: /system.slice/mariadb.service鈹溾攢1702 /bin/sh /usr/bin/mysqld_safe --basedir=/usr鈹斺攢1864 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sockJan 29 13:40:57 centos-db mariadb-prepare-db-dir[1615]: MySQL manual for more instructions.
Jan 29 13:40:57 centos-db mariadb-prepare-db-dir[1615]: Please report any problems at http://mariadb.org/jira
Jan 29 13:40:57 centos-db mariadb-prepare-db-dir[1615]: The latest information about MariaDB is available at http://mariadb.org/.
Jan 29 13:40:57 centos-db mariadb-prepare-db-dir[1615]: You can find additional information about the MySQL part at:
Jan 29 13:40:57 centos-db mariadb-prepare-db-dir[1615]: http://dev.mysql.com
Jan 29 13:40:57 centos-db mariadb-prepare-db-dir[1615]: Consider joining MariaDB's strong and vibrant community:
Jan 29 13:40:57 centos-db mariadb-prepare-db-dir[1615]: https://mariadb.org/get-involved/
Jan 29 13:40:57 centos-db mysqld_safe[1702]: 200129 13:40:57 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
Jan 29 13:40:57 centos-db mysqld_safe[1702]: 200129 13:40:57 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Jan 29 13:40:59 centos-db systemd[1]: Started MariaDB database server.

二、初始化

使用命令:

mysql_secure_installation

[root@centos-db yum.repos.d]# mysql_secure_installationNOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDBSERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.Enter current password for root (enter for none):   # 这里直接enter就可以了
OK, successfully used password, moving on...Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.Set root password? [Y/n] y   # 1.是否设置root密码,选择Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..... Success!By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.Remove anonymous users? [Y/n] y  # 2.是否删除匿名账户,因为不安全,选择Y... Success!Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.Disallow root login remotely? [Y/n] y  # 3.是否允许root用户远程登录,因为要在windows机器上去开发,所以选择Y... Success!By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.Remove test database and access to it? [Y/n] y  # 4.删除测试数据库,选择Y- Dropping test database...... Success!- Removing privileges on test database...... Success!Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.Reload privilege tables now? [Y/n] y  # 5.是否立即刷新权限表,选择Y... Success!Cleaning up...All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.Thanks for using MariaDB!

三、使用mysql

1.登录mysql

[root@centos-db yum.repos.d]# mysql -uroot -p
Enter password:   # 输入root密码
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 5.5.64-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> 

2.修改服务器字符编码

1)查看服务器字符编码

MariaDB [(none)]> \s
--------------
mysql  Ver 15.1 Distrib 5.5.64-MariaDB, for Linux (x86_64) using readline 5.1Connection id:          11
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MariaDB
Server version:         5.5.64-MariaDB MariaDB Server
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 10 min 24 secThreads: 1  Questions: 30  Slow queries: 0  Opens: 1  Flush tables: 2  Open tables: 27  Queries per second avg: 0.048
--------------

可以看到,mysql服务器字符编码为latin1,无法显示中文。并且在这种字符编码下,创建的数据库和表都不能插入和显示中文。

2)修改配置文件

[root@centos-db etc]# vi my.cnf  # 修改/etc/my.cnf配置文件[mysqld]
character-set-server=utf8datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

添加character-set-server=utf8配置。

3)重启mariadb服务

systemctl restart mariadb

4)再次查看字符编码

MariaDB [(none)]> \s
--------------
mysql  Ver 15.1 Distrib 5.5.64-MariaDB, for Linux (x86_64) using readline 5.1Connection id:          2
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MariaDB
Server version:         5.5.64-MariaDB MariaDB Server
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 14 secThreads: 1  Questions: 4  Slow queries: 0  Opens: 0  Flush tables: 2  Open tables: 26  Queries per second avg: 0.285
--------------

3.创建数据库和表

1)查看所有数据库

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

2)创建数据库

MariaDB [(none)]> create database mydb;
Query OK, 1 row affected (0.00 sec)

查看数据库创建过程:

MariaDB [mydb]> show create database mydb;
+----------+---------------------------------------------------------------+
| Database | Create Database                                               |
+----------+---------------------------------------------------------------+
| mydb     | CREATE DATABASE `mydb` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+---------------------------------------------------------------+
1 row in set (0.00 sec)

3)使用某个数据库

MariaDB [(none)]> use mydb;
Database changed
MariaDB [mydb]> 

4)查看所有表

MariaDB [mydb]> show tables;
Empty set (0.00 sec)  # 目前没有任何表

5)创建一张表

MariaDB [mydb]> create table user_info (id int,name char(50),age int);
Query OK, 0 rows affected (0.00 sec)

MariaDB [mydb]> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| user_info      |
+----------------+
1 row in set (0.00 sec)

查看表的创建过程:

MariaDB [mydb]> show create table user_info;
+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table     | Create Table                                                                                                                                              |
+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
| user_info | CREATE TABLE `user_info` (`id` int(11) DEFAULT NULL,`name` char(50) DEFAULT NULL,`age` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

4.表操作

1)插入一条数据

MariaDB [mydb]> insert into user_info (id,name,age) values (1,"张三",32);
MariaDB [mydb]> select * from user_info;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    1 | 张三   |   32 |
+------+--------+------+
1 row in set (0.00 sec)

2)查询数据

MariaDB [mydb]> select * from user_info;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    1 | 张三   |   32 |
|    2 | 李四   |   22 |
+------+--------+------+
2 rows in set (0.00 sec)

MariaDB [mydb]> select name,age from user_info where id=1;
+--------+------+
| name   | age  |
+--------+------+
| 张三   |   32 |
+--------+------+
1 row in set (0.00 sec)

3)删除一条数据

MariaDB [mydb]> delete from user_info where id=1;
Query OK, 1 row affected (0.00 sec)
MariaDB [mydb]> select * from user_info;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    2 | 李四   |   22 |
+------+--------+------+

4)查看表结构

MariaDB [mydb]> desc user_info;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(11)  | YES  |     | NULL    |       |
| name  | char(50) | YES  |     | NULL    |       |
| age   | int(11)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.00 sec)

5.管理操作

1)创建用户

MariaDB [(none)]> create user leokale@'%' identified by '11111111';  # '%'表示用户'leokale'在所有的主机地址都可以登录,使用密码是'11111111'。
Query OK, 0 rows affected (0.00 sec)

刚创建好的用户权限很低,无法创建数据库。

2)修改用户密码

自己修改自己密码:

MariaDB [mydb]> set password = PASSWORD('123456');
Query OK, 0 rows affected (0.00 sec)

root修改其他用户密码:

MariaDB [(none)]> set password for leokale@'%' = PASSWORD("88888888");
Query OK, 0 rows affected (0.00 sec)

3)查看用户表

[root@centos-db etc]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 5.5.64-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
MariaDB [mysql]> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
24 rows in set (0.00 sec)

查看用户表中的信息:

MariaDB [mysql]> select host,user,password from user;
+-----------+---------+-------------------------------------------+
| host      | user    | password                                  |
+-----------+---------+-------------------------------------------+
| localhost | root    | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 127.0.0.1 | root    | *4D77515AB2D393245315E18C62709EC959669A89 |
| ::1       | root    | *4D77515AB2D393245315E18C62709EC959669A89 |
| %         | leokale | *E9D057131C22A0D76B4AAD2C61655BDFA706E637 |
+-----------+---------+-------------------------------------------+
4 rows in set (0.00 sec)

可以看到我们创建的leokale用户。

4)给用户添加权限

使用grant命令:(grant是授予的意思)

MariaDB [mysql]> grant all privileges on *.* to leokale@'%';
MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

这个命令的意思是,授予所有的权限(all privileges),所有的数据库和表(*.*),给用户"leokale"在所有主机登录时。

使用"leokale"登录mysql:

[root@centos-db etc]# mysql -uleokale -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.64-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

可以看到,leokale用户在赋予权限后,可以查询到所有的数据库。并且可以进行所有操作。

6.远程登录

1)在远程计算机上安装mariadb-client,然后使用"leokale"用户进行远程登录:

[root@centos-dbclient ~]# mysql -uleokale -p -h 192.168.1.189
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 5.5.64-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> 

可以看到"leokale"用户可以正常登录。

2)root用户远程登录

[root@centos-dbclient ~]# mysql -uroot -p -h 192.168.1.189
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'192.168.1.190' (using password: YES)

我们发现,root用户无法远程登录;

这是因为root用户默认不支持所有主机登录,可以从mysql.user表中看到:

MariaDB [mysql]> select user,host from user;
+---------+-----------+
| user    | host      |
+---------+-----------+
| leokale | %         |
| root    | 127.0.0.1 |
| root    | ::1       |
| root    | localhost |
+---------+-----------+
4 rows in set (0.00 sec)

所以,我们需要给root用户赋一个可以在任何主机远程登录的权限:

MariaDB [mysql]> grant all privileges on *.* to root@'%' identified by '1234567';
Query OK, 0 rows affected (0.00 sec)
MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

注意,这里一定要重新指定一个密码(远程登录密码和本地密码不一样),也就是identified by "密码"。这里的密码和在localhost上使用root登录的密码不一样。否则无法远程登录。

四、备份和恢复

1.备份数据库

首先观察我们自己创建的数据库有哪些:

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mydb2              |
| mydb3              |
| mysql              |
| performance_schema |
+--------------------+
6 rows in set (0.00 sec)

mydb、mydb1、mydb2都是我们自己创建的数据库;

使用linux命令来备份数据库:

[root@centos-db ~]# mysqldump -u root -p --all-databases > ~/AllMysql.dump
Enter password:
[root@centos-db ~]# 

可以看到在/root目录下生成了一个AllMysql.dump的文件:

[root@centos-db ~]# ll
total 508
-rw-r--r--. 1 root root 515649 Jan 29 17:57 AllMysql.dump
-rw-------. 1 root root   1309 Dec 11 20:27 anaconda-ks.cfg

2.删除数据库

MariaDB [(none)]> drop database mydb;  # 删除mydb
Query OK, 1 row affected (0.00 sec)MariaDB [(none)]> drop database mydb2;  # 删除mydb2
Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> drop database mydb3;  # 删除mydb3
Query OK, 0 rows affected (0.00 sec)

3.恢复数据库

使用source命令,恢复:

MariaDB [(none)]> source ~/AllMysql.dump

也可以在linux命令行中恢复:

[root@centos-db ~]# mysql -uroot -p < ~/AllMysql.dump
Enter password:
[root@centos-db ~]# 

查看是否恢复:

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mydb2              |
| mydb3              |
| mysql              |
| performance_schema |
+--------------------+
6 rows in set (0.00 sec)

可以看到,被我们删除的数据库已经恢复。

五、主从复制

1.基本原理

主从的数据同步如下图所示:

当主库有数据更新时,会将操作写入到Binary log中,然后从库会从Binary log中读取操作命令,并且写到自己的log中,然后执行命令,向自己的库中插入数据。这就保证从库的数据和主库同步。

2.主库配置

1)主库配置文件

[mysqld]
# mysql服务器id
server-id=1
# 指定Binary log文件名
log-bin=mysql-bincharacter-set-server=utf8
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

2)登录数据库,查看主从状态

MariaDB [(none)]> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      245 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

可以看到,我们的Binary log文件名, 以及Position(记录位置)。

3)主库创建负责同步的用户

MariaDB [(none)]> create user 'copyer'@'%' identified by '00000000';
Query OK, 0 rows affected (0.00 sec)

4)赋予拷贝权限:

MariaDB [(none)]> grant replication slave on *.* to 'copyer'@'%';  # 授予其slave身份
Query OK, 0 rows affected (0.00 sec)

5)查看账号

MariaDB [(none)]> select user,host from mysql.user;
+---------+-----------+
| user    | host      |
+---------+-----------+
| copyer  | %         |
| leokale | %         |
| root    | %         |
| root    | 127.0.0.1 |
| root    | ::1       |
| root    | localhost |
+---------+-----------+
6 rows in set (0.00 sec)

6)检查授权账号的权限

MariaDB [(none)]> show grants for copyer@'%';
+-------------------------------------------------------------------------------------------------------------------+
| Grants for copyer@%                                                                                               |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO 'copyer'@'%' IDENTIFIED BY PASSWORD '*2DF3063C523DF16DEFB8A454F9DA045D92D509BA' |
+-------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

7)锁定数据库

锁定数据库是为了不让数据变动,确保position不动。

MariaDB [(none)]> flush table with read lock;
Query OK, 0 rows affected (0.00 sec)

此时,查看一下position:

MariaDB [(none)]> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
|    |      474 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

8)导出数据

导出数据,并在从节点恢复,保证主从的旧数据同步。

主节点导出数据:

[root@centos-db ~]# mysqldump -uroot -p --all-databases > /opt/zhucong.dump
Enter password:
[root@centos-db ~]# 

将备份文件传输到从节点:

[root@centos-db ~]# scp /opt/zhucong.dump root@192.168.1.190:/opt/
The authenticity of host '192.168.1.190 (192.168.1.190)' can't be established.
ECDSA key fingerprint is SHA256:fGo4tMrS0HOc+z7k+6tkQUTxPxWwAoBw30xYF59d5tc.
ECDSA key fingerprint is MD5:36:41:f3:3f:47:3a:46:93:7e:94:c6:8f:50:d1:8a:81.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.190' (ECDSA) to the list of known hosts.
root@192.168.1.190's password:
zhucong.dump 

9)从节点导入数据

# 登录从节点mysql操作MariaDB [(none)]> source /opt/zhucong.dump
Query OK, 0 rows affected (0.00 sec)

查看从节点数据库:

MariaDB [mysql]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mydb2              |
| mydb3              |
| mysql              |
| performance_schema |
+--------------------+
6 rows in set (0.00 sec)

注意:当我们的从节点导入了从主节点导出的数据,账号密码也变得和主节点一致,当重启服务后,需要使用主节点的root密码来登录。

3.从库配置

1)从库配置文件

[mysqld]
server-id=2
character-set-server=utf8
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

指定一个server-id,注意,要和主库区分开(主库为server-id=1)。

修改完配置文件后,重启数据库

[root@centos-dbclient opt]# systemctl restart mariadb

2)查看从库的log_bin和server_id

MariaDB [(none)]> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | OFF   |
+---------------+-------+
1 row in set (0.00 sec)

可以看到,从节点没有启用log-bin(只有主节点需要使用Binary log)。

MariaDB [(none)]> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 2     |
+---------------+-------+
1 row in set (0.00 sec)

可以看到,我们在配置文件中配置的从节点server-id=2已生效。

3)配置从库与主库的联系(很重要)

MariaDB [(none)]> change master to master_host='192.168.1.189',  # master_host是主节点IP-> master_user='copyer',  # master_user是我们在主节点上创建的负责复制数据的用户-> master_password='00000000',  # copyer用户密码-> master_log_file='mysql-bin.000001',  # 主节点的Binary log文件名,在主节点可以用show master status;查看-> master_log_pos=474;  # Binary log文件的内容位置,也是通过show master status;查看(我们事先进行了锁表,pos不会变)
Query OK, 0 rows affected (0.01 sec)

4)开启slave开关

MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)

开启slave后,从节点就会开启两个线程来和主节点通信。

5)查看slave信息

MariaDB [(none)]> show slave status\G;
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.1.189Master_User: copyerMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000001Read_Master_Log_Pos: 474Relay_Log_File: mariadb-relay-bin.000002Relay_Log_Pos: 529Relay_Master_Log_File: mysql-bin.000001Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0Last_Error: Skip_Counter: 0Exec_Master_Log_Pos: 474Relay_Log_Space: 825Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 0Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1
1 row in set (0.00 sec)

可以看到 Slave_IO_Running 和 Slave_SQL_Running都是YES。

4.解锁主库,并验证

1)主库从库都配置完毕后,我们将主库解锁:

MariaDB [(none)]> unlock tables;
Query OK, 0 rows affected (0.00 sec)

2)验证

在主库中创建一个数据库:

MariaDB [(none)]> create database test_db;
Query OK, 1 row affected (0.00 sec)

在从库中查看数据库:

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mydb2              |
| mydb3              |
| mysql              |
| performance_schema |
| test_db            |
+--------------------+
7 rows in set (0.00 sec)

我们可以看到,从库也创建了一个数据库叫test_db;

至此,主从复制部署完毕。

[数据库] MariaDB安装及使用相关推荐

  1. Android平板离线安装数据库Mariadb

    Android平板离线安装数据库Mariadb 一 .安装数据库Mariadb 安装Mariadb之前,先在Android平板上安装termux (1)先下载termux.apk安装 注意:安装ter ...

  2. Linux系统下载安装数据库MariaDB

    Linux系统下载安装数据库MariaDB 1. 启动Linux系统,检测是否联网 可以去ping一下网站 ctrl+c退出 2. 去yum下载MariaDB yum相当于一个应用商城,可以去查找.安 ...

  3. Day 03 - 安装数据库 MariaDB 在 Amazon Linux 2

    Day 03 - 安装数据库 MariaDB 在 Amazon Linux 2 启动 EC2 后每小时就要开始收费,务必要记得没有使用的时候就把 EC2 停止(stop),但不要把它终止掉(termi ...

  4. centos7安装数据库MariaDB

    在CentOS7下,默认安装的数据库为MariaDB,属于MySQL数据库的一个分支,所以我还是使用了MariaDB: #yum install mariadb-server -y #systemct ...

  5. linux——数据库mariadb的基础操作

    一.数据库的安装及初始安全配置 [root@localhost ~]# yum install mariadb-server -y ##安装数据库服务软件 ##安装过程略 [root@localhos ...

  6. 4.21 LNMP环境介绍 4.22/23/24 Mariadb安装 4.25 服务管理

    2019独角兽企业重金招聘Python工程师标准>>> LNMP环境介绍 Mariadb安装 服务管理 LNMP环境介绍 Linux+Nginx+Mysql/mariadb+php ...

  7. secure连不上远程地址_[笔记]Mariadb安装并配置远程访问

    引言 熟悉的小伙伴都知道我自用有一台NAS,并为此折腾了不少内容: 西蒙宫:折腾,用J3455搭建家庭nas 西蒙宫:让家庭NAS走向世界,兼谈Zerotier 西蒙宫:折腾--组装NAS编译安装ff ...

  8. MariaDB安装、卸载以及相关设置(Linux服务器Mysql部署)

    一.Centos7上安装Mariadb数据库 a. 安装 yum -y install mariadb mariadb-server b. 启动 systemctl start mariadb c. ...

  9. 测试环境搭建mysql数据库_软件测试环境的搭建系列:[2] MySQL数据库的安装

    原标题:软件测试环境的搭建系列:[2] MySQL数据库的安装 本文介绍CentOS系统上用源码包方式安装MySQL的方法,源码安装方式是需要自己到网上下载源码包,然后解压安装,此方式可以指定配置参数 ...

最新文章

  1. C++对象模型2——编译器生成构造函数的几种情况
  2. When IT meets Coupon
  3. centos 6.8 php mysql_Centos 6.8编译安装LNMP环境(Nginx+MySQL+PHP)教程
  4. 利用python快速搭建一个ftp文件服务器
  5. 清除webBrowser 缓存和Cookie的解决方案
  6. Webpack进阶(一) tree shaking与不同mode
  7. 一步步优化JVM六:优化吞吐量[转]
  8. 借助波音公司打造优秀按单制造(MTO II)管理系统
  9. 什么叫做java程序中的继承_【Java】基础16:什么叫继承?
  10. OPPO Find X,一款(可能)被全面屏“耽搁”了的AI手机
  11. SpreadJS企业表格技术实践一:自定制表格编辑器
  12. EXCEL批量修改文件名
  13. 360浏览器调试html5,360极速浏览器开发:调试指南
  14. 定义一个方法用于判断一个字符串是否是对称的字符串,并在主方法中测试方法。例如:“abcba“、“上海自来水来自海上“均为对称字符串
  15. cc联盟网-中国最佳电子商务托管平台
  16. (android文档原创翻译)管理Activity的生命周期一
  17. ACPI 待机/睡眠/休眠有啥区别?
  18. Servlet - Java Web Core Component
  19. [转载]livid 写给他自己的
  20. 个人中端深度学习工作站配置(硬件系统篇)

热门文章

  1. 轨迹绕圈算法_基于三次B样条曲线拟合的智能车轨迹跟踪算法
  2. 面向建筑应用的三维点云数据获取和处理的计算方法
  3. activemq使用详解
  4. window系统 安装 nvm 详细步骤
  5. 美容院的会员等级怎么设置?
  6. [转]JFFS2源代码情景分析Beta2
  7. Java多线程探究-死锁原因
  8. 一种基于输出电压的欠压保护电路设计方案
  9. Word 自动更新编号(插入题注、交叉引用)
  10. 微信公众号的八大价值