FROM sys.databases
--WHERE name = 'DATABASENAME'
--WHERE database_id = 14
The copy-pastes and explanations blog for SQL code, errors and daily cases! This blog is a 'list' of actions that always good to have available. The copy-paste concept here is short and clear explanations and descriptions (no long stories!) and - of course - the code to take (copy) and use (paste). The blog deals in the database (mostly) and software issues.
Overview for gMSA - see in this post.
MySQL Cluster Overview
In MySQL Cluster, there is typically no replication of data. It has only data node synchronization
MySQL Cluster is a shared-nothing architecture
Replication
Cluster
Replication | Cluster | |
---|---|---|
Asynchronous / synchronous | Asynchronous | synchronous |
Automatic failover | No (a slave has to be promoted to master) | Yes |
Downtime when a master fails | Yes | No |
MySQL InnoDB Cluster provides high-availability and scaling features.
MySQL InnoDB Cluster consists of at least three MySQL Server instances.
MySQL InnoDB Cluster usually runs in a single-primary mode, with one primary instance (read-write) and multiple secondary instances (read-only).
MySQL InnoDB Cluster data nodes are actually a Group Replication.
InnoDB Cluster does not provide support for MySQL NDB Cluster.
A standard MySQL server does not support the MySQL Cluster engine NDB.
Linux
We can only have one version of MySQL setup on the machine using the default installation procedure with apt-get.
If we try to install one version over another, it will replace the first version and will retain the second version.
In Windows, we can install different MySQL versions on the same server using the installer:
Download MySQL Installer for windows and run it.
Notes:
mkdir -p /opt/second_server_data/ |
Initializing the directory
chmod --reference /var/lib/mysql /opt/second_server_data/ chown --reference /var/lib/mysql /opt/second_server_data/ |
Add rules to the policy file to stop the OS from restricting MySQL to access our newly created directoriesy, etc.
Edit “/etc/apparmor.d/usr.sbin.mysqld”, add these permissions (as the default data dir has).
sudo nano /etc/apparmor.d/usr.sbin.mysqld Under “# Allow data dir access”: /opt/second_server_data/ r, /opt/second_server_data/** rwk, Under “# Allow pid, socket, socket lock file access”: /var/run/mysqld/second_server.pid rw, /var/run/mysqld/second_server.sock rw, /var/run/mysqld/second_server.sock.lock rw, /run/mysqld/second_server.pid rw, /run/mysqld/second_server.sock rw, /run/mysqld/second_server.sock.lock rw, |
Restart apparmor service
(AppArmor is a linux kernel security module that allows you to restrict program capabilities on a per-program basis)
sudo service apparmor restart |
mysqld --initialize --user=mysql --datadir=/opt/second_server_data/ |
Check the contents of the dir: “sudo ls -l /opt/second_server_data/”.
These files should be there (drwxr-x--- 2 mysql mysql …..) : mysql, performance_schema, sys
A default root password was generated and stored in “/var/log/mysql/error.log”
2020-12-17T08:45:06.170673Z 1 [Note] A temporary password is generated for root@localhost: 1hfBQ5G66d_V
Given correct permissions MySQL is able to create these on its own.
* Steps 3-5 can be done also using mysqld or mysqld_safe.
start mysqld / mysqld_safe
sudo mysqld --no-defaults --datadir=/opt/second_server_data/ --port=3307 --socket=/var/run/mysqld/second_server.sock |
sudo mysqld_safe --no-defaults --datadir=/opt/second_server_data/ --port=3307 --socket=/var/run/mysqld/second_server.sock |
mysql -h 127.0.0.1 -P 3307 -u root –p --Or mysql --socket=/var/run/mysqld/second_server.sock -u root –p --Stop mysqld_safe using: sudo mysqladmin -h 127.0.0.1 -P 3307 -u root -p shutdown |
In order to perform SQL operations, the auto generated password should be changed:
ALTER USER 'root' @ 'localhost' IDENTIFIED BY 'second_server' ; |
[mysqld] server-id = 2 port = 3307 socket = /var/run/mysqld/second_server.sock datadir = /opt/second_server_data/ #mysqlx = 0 |
or
[mysqld_safe] server-id = 2 port = 3307 socket = /var/run/mysqld/second_server.sock datadir = /opt/second_server_data/ #mysqlx = 0 |
sudo mysqld --defaults-file=/etc/mysql/second_server.cnf |
or
sudo mysqld_safe --defaults-file=/etc/mysql/second_server.cnf |
Create a service using system
Save in “/lib/systemd/system/” or “/etc/systemd/system”
touch mysql_3307.service vi mysql_3307.service [Unit] Description=MySQL 3307 service After=network.target [Service] Type=simple Restart=always User=mysql Group=mysql ExecStart=/etc/mysql/sudo mysqld --defaults-file=/etc/mysql/second_server.cnf TimeoutSec=600 RuntimeDirectory=mysqld RuntimeDirectoryMode=755 LimitNOFILE=5000 [Install] WantedBy=multi-user.target |
Sudo systemctl start mysql_3307 |
systemctl status mysql_3307 journalctl -xe |
systemctl stop mysql_3307 |