Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 94 additions & 0 deletions pmm_qa/percona_server/data/ps_load.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
-- ========================================
-- CREATE TABLES
-- ========================================

CREATE TABLE students (
student_id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
birth_date DATE
);

CREATE TABLE classes (
class_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
teacher VARCHAR(100)
);

CREATE TABLE enrollments (
enrollment_id INT AUTO_INCREMENT PRIMARY KEY,
student_id INT,
class_id INT,
enrollment_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (student_id) REFERENCES students(student_id),
FOREIGN KEY (class_id) REFERENCES classes(class_id)
);

-- ========================================
-- INSERT INITIAL DATA
-- ========================================

INSERT INTO students (first_name, last_name, birth_date) VALUES
('Alice', 'Smith', '2005-04-10'),
('Bob', 'Johnson', '2006-08-15'),
('Charlie', 'Brown', '2004-12-01');

INSERT INTO classes (name, teacher) VALUES
('Mathematics', 'Mrs. Taylor'),
('History', 'Mr. Anderson'),
('Science', 'Dr. Reynolds');

INSERT INTO enrollments (student_id, class_id) VALUES
(1, 1),
(1, 2),
(2, 2),
(3, 1),
(3, 3);

-- ========================================
-- SELECT: View all data after insert
-- ========================================

-- View all students
SELECT * FROM students;

-- View all classes
SELECT * FROM classes;

-- View all enrollments
SELECT * FROM enrollments;

-- View students enrolled in Mathematics
SELECT s.first_name, s.last_name
FROM students s
JOIN enrollments e ON s.student_id = e.student_id
JOIN classes c ON e.class_id = c.class_id
WHERE c.name = 'Mathematics';

-- Count students per class
SELECT c.name AS class_name, COUNT(e.student_id) AS student_count
FROM classes c
LEFT JOIN enrollments e ON c.class_id = e.class_id
GROUP BY c.name;

-- ========================================
-- UPDATE DATA
-- ========================================

UPDATE students
SET last_name = 'Williams'
WHERE first_name = 'Bob' AND last_name = 'Johnson';

UPDATE classes
SET teacher = 'Ms. Carter'
WHERE name = 'History';

-- ========================================
-- DELETE DATA
-- ========================================

DELETE FROM enrollments
WHERE student_id = (SELECT student_id FROM students WHERE first_name = 'Alice' AND last_name = 'Smith');

DELETE FROM students
WHERE first_name = 'Alice' AND last_name = 'Smith';
34 changes: 33 additions & 1 deletion pmm_qa/percona_server/percona-server-setup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@
- name: Add service to pmm server
community.docker.docker_container_exec:
container: "ps_pmm_{{ ps_version }}_{{ item }}"
command: pmm-admin add mysql --query-source={{ query_source }} --username=root --password={{ root_password }} --environment=ps-dev ps_pmm_{{ ps_version }}_{{ item }}{{ random_service_name_value }} --debug 127.0.0.1:3306
command: pmm-admin add mysql --query-source={{ query_source }} --username=root --password={{ root_password }} --cluster=ps-single-dev-cluster --environment=ps-dev ps_pmm_{{ ps_version }}_{{ item }}{{ random_service_name_value }} --debug 127.0.0.1:3306
loop: "{{ range(1, nodes_count | int + 1) | list }}"
when: setup_type != "gr" and setup_type != "replication"

Expand Down Expand Up @@ -234,3 +234,35 @@
--time=60
run
loop: "{{ range(1, nodes_count | int + 1) | list }}"

- name: Copy a load file into the container
community.docker.docker_container_copy_into:
container: "ps_pmm_{{ ps_version }}_{{ item }}"
path: ./data/ps_load.sql
container_path: /ps_load.sql
loop: "{{ range(1, nodes_count | int + 1) | list }}"

- name: Wait 10 seconds for node to be connected
pause:
seconds: 10

- name: Run load inside of first percona server node
community.docker.docker_container_exec:
container: "ps_pmm_{{ ps_version }}_1"
command: >
/bin/sh -c '
mysql -uroot -p{{ root_password }} -e "CREATE DATABASE school;"
mysql -uroot -p{{ root_password }} school < /ps_load.sql
'
when: setup_type == "gr" or setup_type == "replication"

- name: Run load inside of all percona server nodes
community.docker.docker_container_exec:
container: "ps_pmm_{{ ps_version }}_{{ item }}"
command: >
/bin/sh -c '
mysql -uroot -p{{ root_password }} -e "CREATE DATABASE school;"
mysql -uroot -p{{ root_password }} school < /ps_load.sql
'
loop: "{{ range(1, nodes_count | int + 1) | list }}"
when: setup_type != "gr" and setup_type != "replication"
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
- name: Generate my.cnf for each node
template:
src: my.cnf.j2
src: ./data/my-group-replication.cnf.j2
dest: "{{ data_dir }}/node{{ item }}/my.cnf"
loop: "{{ range(1, nodes_count | int + 1) | list }}"

- name: Create initialization script for each node
template:
src: init.sql.j2
src: ./data/init-group-replication.sql.j2
dest: "{{ data_dir }}/node{{ item }}/init.sql"
loop: "{{ range(1, nodes_count | int + 1) | list }}"

Expand Down
Loading